Crown and Cutlass
Alpha-1.2

Crown and Cutlass is a 3d pirate action/adventure game in the spirit of the old Pirates! game.  It is being written in C++, using OpenGL and SDL with an emphasis on cross-platform compatibility.  The project is still early on in development, although it is just beginning to look like an actual game.

Please visit http://crownandcutlass.sourceforge.net/ for more information.

Notes:
We have added audio in this release using Ogg Vorbis files and OpenAL.  Music is streamed off of the disk, while the sound effects are loaded directly into memory.  We still have some tweaking to do, and currently do not take advantage of OpenAL's 3d capabilities.  We are in the process of finding music for use in-game.  If you are interested in helping, please see our Help Wanted forum at: http://sourceforge.net/forum/forum.php?forum_id=409786

We have fairly complete naval battles now, although the speed and turning radius of the ships still needs to be tweaked and there is no HUD yet.  The AI also needs a significant amount of work still.  It current will not lead it's shots or even account for it's own speed at all.  However, it is a decent start for now.  Players periodically see ships and have the choice to attack or sail away.  After the battle (assuming victory), the player may take the captured cargo and gold.  More work will be done as we add additional gameplay features such as nationalities and ship crews.

Basic trading capabilities are present in Alpha-1.2.  You can now buy and sell goods in towns, as well as capture cargo in naval battles.  We are making progress towards a more functional (and dynamic) economy.

In order to allow for the trading and the naval battles, we reworked how ships are handled and added a few new ships.  The ship settings are loaded in from the Ships.xml file.

Thanks to Aleksandar Kovac for supplying us with a new logo.  It has been incorperated into this release in several places.

Our menu system has been reworked to make creating menus easier for the developers, and to allow us to create more useful menus.  It also now allows for mouse input.


Alpha-1.1 Notes:
Once Jeff Koppe provided the new model, we had to rewrite the model loading code so we could use it.  The new code is somewhat of a hybrid between the old system and what is planned for the future.  For now it still uses display lists, although we may move towards VA/VBO's in the future.  Eventually, we'll probably write our own model format, but for now it just loads .obj files.

There is a new automatic menu generation system, so we don't have to recode a basic menu everytime we need to create a new menu in for the game.  Rather than copying and pasting code, we can now just pass this menu class a few lists and it will generate the menus automatically.

A preliminary economy is in this release as well.  Currently it just loads the data and displays it when you enter a city.  However, future releases will build on this to allow the player to interact with the economy and trade in the cities.

The ocean rendering has been updated.  The actual shore line no longer moves, which will allow us to improve the heightmap, since low elevation land won't spend half of the time underwater.  There are also waves breaking on the shore lines.  The actual wave motion may change some, but the effect is pretty good in general.


Requirements:
SDL library
SDL_image library
Videocard capable of multi-texturing

Config.xml:
This is the configuration file.  It is now fairly straight-forward xml, loaded with the tinyxml library.  The Width and Height values should be integers and they determine the resolution of the window.  Fullscreen should be either "true" or "false" and change whether Crown and Cutlass runs fullscreen or in a window.  VBO should also be either "true" or "false" and specifies whether to use VBOs to draw the terrain or just vertex arrays.  If VBOs are enabled, but not supported by the video card, Crown and Cutlass logs a warning and falls back on vertex arrays.  The configuration loading code is now much more flexible, simpler, and more robust.  The SDLParachute should be set to "true" unless you are trying to get a core dump for debugging (then set it to "false").  CompressTextures enables ("true") or disables ("false") compressing the textures when they are stored in video memory.  Almost everyone should be able to enable this setting, but if you have trouble, you can try disabling compressed textures.


Game Controls:
up - speed up
down - slow down
left - turn left
right - turn right
'm' - display the map
'q' - fire port (left) cannons (in naval battles)
'e' - fire starboard (right) cannons (in naval batles)
'c' - abrupt turn-around (for testing)
'd' - dump player info (for testing)
'b' - force a naval battle (for testing)
'z' - take screenshot
1-8 - change view (this is mostly just for development)
esc - go to the menu

When looking at the map, hold 't' and click the mouse to teleport to that location.  This is just a development feature, but it sure is useful for testing.  Also, 'i' will display some debugging information.


Support:
If you are having trouble compiling or running Crown and Cutlass, please visit http://crownandcutlass.sourceforge.net/ for assistance.

Known issues:
- Errors loading files are not handled gracefully
- Some Cities are difficult or impossible to enter
- VBO's do not work on ATI 8500 video cards
- Closing the game window directly (without choosing "Exit" from the main menu) can cause crashes
- Occasionally, viewing the main menu causes a crash
- Saving / loading games does not deal with the player's cargo or gold


Developers:
David Thulson - Original developer
Collin Sanford - Developer
Ben Coppock - Web Design


Code Contributors:
Ed Mack - Additional Makefile help

Code Contributors for Alpha-1.1:
Michael Verchenko - Menu bug fix
Ed Mack - Improved Makefile


Thanks:
Jeff Koppe provided us with the 3D models of the ships.  He has agreed to provide us with additional models as well.  Needless to say, it is really nice to have such a good ship model in the game.

Wes Attaway provided the heightmap.  It is modified from a scan of the original Pirates! map which you can find on any number of classic gaming websites.

The main menu background was provided by Jason VanDerMark.

Thanks to Aleksandar Kovac for designing the Crown and Cutlass logo.

The loading screen was provided by Gary Luck.  Gary also provided us with the sound effects found in the naval battles.

Thanks to Jay Huber for assistance creating the main menu music.

Crown and Cutlass uses TinyXML for handling XML files.  More information can be found in the TinyXML.readme file or at http://www.grinninglizard.com/tinyxml/index.html

The obj model loading code is slightly modified from the code found in Nate Robins' "Smooth Normal Generation with Preservation of Edges" project.  It can be found at: http://www.xmission.com/~nate/smooth.html

The collision detection code is used with permission from "Fast, Minimum Storage Ray-Triangle Intersection" by Ben Trumbore and Tomas Mller.  This code can be found at: http://www.acm.org/jgt/papers/MollerTrumbore97/  Their entire paper can be found at: http://www.graphics.cornell.edu/pubs/1997/MT97.html

The screenshot and tga handling code was almost directly copied from chapter 7 of "OpenGL Game Programming".  Slight modifications were necessary to get rid of Windows specific code.

The frustum culling code is slightly edited from a tutorial by Mark Morley.  I found it at www.markmorley.com/opengl/frustumculling.html, but since that page seems to be unavailable, you can find a copy (saved from the google cache) at http://crownandcutlass.sourceforge.net/frustum.html

The BuildTexture function is fairly heavily modified from NeHe Tutorial 6.

The font rendering code is modified from NeHe Tutorial 17.  We are still using the font texture from that lesson.

The water, snow, and beach textures are modified from images found at http://www.vb3d.com/Textures.html

Thanks to Corey O'Connor for endless help with opengl.
