Revision History | ||
---|---|---|
Revision 1.0 | 2005-3-18 | AN |
Initial release in DocBook format. |
Table of Contents
![]() | Warning |
---|---|
While this project is intended to be completed by a "team effort" it is important to remember that only members of YOUR team may contribute to YOUR project. This means that you may not "share" or "borrow" code or design solutions with ANYONE (this includes all individuals not affiliated with this class), EXCEPT members of YOUR team and official CS2335 teaching staff. The CS2335 TA's are well aware that similar SWATLP implementations are widely available (on the web and otherwise). Using or referencing the source code or design documents from any of these implementations is strictly prohibited. Including any materials associated with these implementations in your submission is strictly prohibited. De-compilation of any byte/object code is strictly prohibited. It should be noted that using material written by another individual in violation of a copyright or patent is a crime and subject to criminal/civil prosecution (see U.S. copyright law, U.S. patent law). College of Computing staff will be comparing all submissions in an effort to identify any individuals who are involved in academic misconduct. In addition your submission will be compared to those otherwise available (via the web or otherwise). A "CHEAT-FINDER" WILL BE USED AND IT WILL COMPARE YOUR SUBMISSION TO OTHER STUDENTS' SUBMISSIONS AND THOSE AVAILABLE ON THE WEB - IF YOU CHEAT YOU WILL BE CAUGHT. Any activities that give a team an unfair advantage over any other team are considered academic misconduct (see Georgia Institute of Technology Academic Honor Code). The College of Computing plans to prosecute all cases of academic misconduct in this class. If the College of Computing staff has reason to believe that any state or federal law has been violated, appropriate law enforcement officials may be notified. If you have any concerns about which resources may or may not be used, you should contact your CS2335 TA. If you know of outside resources (third-party libraries, etc.) that could be helpful, your TA can make them available. |
The prince of your solar system is in trouble. His father, the king, went out of town for the Intergalactic Convention of Kings (ICK) and while he was away the prince squandered the entire solar system's treasury by throwing parties and gambling on space-horse racing. The King will return from ICK in six months. Before then, the prince needs to bring glory back to the solar system so he doesn't get grounded for the rest of eternity. He has enough credits left in the treasury to hire a young space pilot and equip him with a basic ship and a bit of spending money. You are that pilot, and you need to make your beloved solar system rich and prosperous again.
You fly around space between solar systems trading goods and fighting other ships. You become rich and powerful by trading goods, destroying other ships and looting the remains, or pirating other merchants. While in port, the game is menu-based, similar to Taipan or Space Trader. After warping to a new solar system, you will pilot your ship in a manner similar to the old arcade game Asteroids or Space War. While piloting, you may encounter other merchants, pirates, or police ships, and can deal with them as you see fit. Upon reaching the planet, you will land your ship on the surface, similar to Lunar Lander. The game is networked, and an arbitrary number of players can be participating in the world, fighting and trading with (or ignoring) each other. The overall combination of menu-based trading and real time combat and exploring is similar to Sid Meier's Pirates!
Upon starting the game for the first times, you will make a character. You first choose your solar system's system of government. Then you choose the system's technology level. Some governments cannot support certain technology levels. Finally, you choose your own name and set your skills. The available skills are Piloting, Fighting, Trading, and Engineering. You set one to be your specialization (+6), one to be a strength (+2), one to be normal (+0), and one to be a weakness (-2). (The numbers given were just to show a possible relation between starting values. Choose any values that suit your game's systems) You may then choose to start with either a basic fighter ship or a basic trader ship. The trader ship starts with one cannon and a small amount credits. The fighter starts with two cannons and fewer credits than the trader.
The universe is composed of many solar systems. When the game world is first made by the server, a slew of them are generated. Each time a player creates a new character and system, that system is added to the game world and can be visited by other players as if it was a pre-existing system. Each solar system has a port where players trade (like Taipain) an approach zone that they fly through (like Asteroids), and a landing zone like Lunar Lander they come to rest on.
While in port, you may visit the shipyard, the bank, and the marketplace. You can also leave the port to enter space and travel elsewhere.
In the shipyard you can repair and refuel your ship. More advanced ships require higher quality fuel and more skilled repairmen, and thus the work is more costly. Shipyards of more technologically advanced civilizations may offer various types of weapons, shields, and gadgets to improve your ship, as well as entirely new ships. The benefit of new ships is to gain more space for guns, cargo, and fuel. When buying a ship, you trade in your old ship and pay the difference in costs. Your gadgets will be freely transferred to the new ship. The shipyard's workers will happily move your cannons and shield upgrades to your new ship for a sensible fee. At the shipyard you may also have guns removed from your ship and change the order in which your guns fire, again for a small cost.
The bank will offer loans to players with good reputations (no criminal record). The amount of money they will offer is based on the total worth of the player at that time. Banks charge a 10% fee on the loan per day, which is automatically taken from your credits whenever you make a warp jump. If you cannot pay, the police will attempt to capture you when you are sighted. Owing money will also add to your criminal record. If you cannot pay the fine, your ship, its cargo and all installed gadgets will be sold and the money will be used to pay what you owe to the bank. You will be fined by the police, and then they will give you the remaining credits and a basic ship. If there is not enough money, you basically start over with the starting ship and credits and you are instantly deported back to your homeworld (i.e. the same exact state as when you were starting the game from scratch.)
At the marketplace you can buy and sell goods. Different solar systems have different needs and surpluses based on their government and technology level. You will get rich by moving from system to system and taking advantage of their various needs. Port events like famine, galactic war, ice-age, and overwhelming boredom will temporarily alter prices for the related goods in that solar system.
In addition to the functions of a normal port, the port in your native solar system has some extra features. A warehouse exists in which you may store a large amount of goods. Additionally, you can visit the treasury and either add or remove money from it. The win condition of the game is to accumulate a mass of money in the treasury by the time the kind returns from ICK. The game doesn't actually end at this point because it is an online game, but that is considered a victory.
Bored civilizations love games. Pacifists and Cybernetic cultures generally have nothing to do, because they don't fight, or they have robots do all their work.
Cybernetic cultures desire ore above all else. They have exhausted their supply of natural resources, and need ore both to build robots and to make backup devices for their whole solar system, their greatest goal.
A potent narcotic made on primitive worlds that is ground up and put into colorful, candy coated pills labeled with the trademark "MMM" logo. The components involved grow in dense forests that most advanced cultures have wiped out long ago. MMM's are contraband in most cultures and tend to attract the police. Cybernetic cultures have no interest in using narcotics, and don't particularly mind if you carry them in their systems. The communist and anarchist underground are both particularly fond of the pills.
Feudal cultures love weapons. Nothing helps siege a medieval castle like an eighty million volt laser cannon. Anarchists also have a penchant for destruction. Pacifist culture has no use for weapons, and neither produces nor buys them.
Some planets have freshwater oceans. Others are deserts and desperately need the sweet liquid. Demand for water has less to do with the culture, and more to do with the planet itself.
Pacifists want to keep their people happy and safe, so medicine is a primary concern. Anarchists and cybernetics don't care for or need medicine.
The Short Range Chart is connected to an Encyclopedia that holds information on all the locations you can visit. Information is not available in your encyclopedia until you have learned it by exploring the location personally. The encyclopedia does not provide precise information, but will give a reasonable range of what prices the system will buy and sell goods for. It will also generally tell you the technology level and government type of a system and any ther pertinent information such as pirate and police activity. You always know which solar systems exist, whether or not you have any specific information on a solar sytem. What the information provides you are details. With information you will know the government type, technology level, average prices, and police/pirate/merchant activity in the system. With this knowledge you can know that a certain planet is high tech (which needs ore) and so you can make good profits by going there, instead of warping there to find out. So in short, the more information you have, the more efficient you can be.
To leave a port, you open your short range chart. It graphically shows your location in the universe, showing all systems that you can reach with your current amount of fuel. You may return to the port you just left, or you can choose a new port to travel to. If you travel, a warp bubble appears around your ship and you are teleported near to your destination, at which point you engage in the planetary approach process. You do not travel to arbitrary spots in space, rather you always travel to a solar system's port. Each time you make a warp jump, one day passes. This means that although the game is multiplayer, time will pass at different rates for each player depending on how frequently they make jumps. The chronological discrepancy is entirely understandable given the theory of relativity and all the light speed travel that is going on. Time is therefore more of a personal trait than a global trait.
Planetary Approach is the real-time part of this project, and is essentially a small version of the classic space arcade games Asteroids and SpaceWar. Your entry point from a warp is about 20 clicks (distance unit) away from the port you are trying to reach. You need to manually fly to your destination. Along the way you will probably avoid (or destroy) asteroids, battle (or run from) pirates, and trade with (or ignore) merchants. You may also be searched by the police, especially if you have a sinister reputation. Movement of your ship through space is physics-based. You can rotate left or right and accelerate forward. You will continue to drift with momentum until you apply thrust in an opposite direction or apply the space brakes (very high tech). When you apply thrust, your ship will accelerate until it reaches a maximum speed, and will continue along until it is stopped by you or an unfortunate collision. Running into asteroids damages the ship based on the speed of collision and size of the asteroid and ship. Crashing into other ships is similarly unpleasant. You will travel through four zones to reach the space port, each of which is one screen in size. Moving to the top of the screen will transfer you to the bottom of the next zone. You will bounce harmlessly off of the bottom of a zone, and will wrap to the opposite side if you move too far to the left or right edge of the screen. While in space you can toggle between war and peace modes. Your action in war mode is to shoot your weapons. Your action in peace mode is to request a trade with nearby merchants and players, enter a port, or talk to police ships.
![]() |
In the above image, the white ship is you as you travel through the four zones from the warp point (where you appear in zone 1) to the space port (the green dot). Red triangles are pirates, blue triangles are police, and yellow triangles are merchants. The brown circles are asteroids. Each zone is one screen in size. After warping to a new system using your short range chart, the zone will be filled with asteroids and/or space debris, but no police or pirates (zone 1 in the image). You might find a trader or two out here, but it is generally unlikely. The next three zones (zone 2-4) each have fewer asteroids and less debris. Also, as you progress through the zones, the chance of pirates in a zone decreases and the chance for police and traders increases. Traders and police will not share a zone with pirates. Some systems with a large pirate presence might have pirates through all three zones, and no merchants or police. Other systems might have only merchants and police, or some pirates in the outermost zone, and then no more. Pirate presence is based somewhat on luck, and largely on government type. The fourth zone has a space station in it, in addition to any police, merchants, or pirates. Choosing to dock at the space station will change to a fifth zone, which is a landing zone.
In the landing zone, gravity will pull you down toward the ground. You use upward thrust to stop from plummeting to the earth and horizontal thrusts to maneuver to a landing pad. Hitting the ground with notable velocity will damage your ship by an amount dependant on the size of the ship and the speed you hit with. If you land outside the landing zone, you can thrust up and maneuver yourself back into place. Once you have stopped on the landing zone, you are officially inside the port and switch to the appropriate screen with the port's menus. A port will not let you dock (with the exception of anarchist ports) if there are pirates in the area or you are currently in battle with the police, so you will have to dispose of your enemies first in those cases.
![]() |
Your action in war mode is to fire your weapons. Your shots will zoom off into space and disappear when they reach the top or bottom of the screen, or when they collide with a valid target. Shots will wrap to the opposite side if they travel off the left or right side of the screen. You can be hit by your own weapon fire if it wraps around and you are in the way. Various types of weapons are available that will fire with different velocities, powers, and formations (such as spread fire). When you destroy another ship, there is a chance that some amount of their cargo will survive the explosion and float around space. Touching the lost cargo with your ship will pick up as much as possible and add it to your hold. Merchants typically have more goods than pirates. Destroying merchants is an act of criminality, and destroying pirates is considered a virtuous act that will make the police trust you more. Police ships can be full of contraband cargo they have seized, making them very valuable targets, but destroying them will absolutely ruin your record and the police will not treat you well from that point on.
Death is permanent. However, if you have an escape pod gadget on your ship you survive. You lose your ship, all cargo, and any mercenaries (if they exist). Your escape pod takes you to the nearest port. Essentially, your ship explodes then you appear in port with nothing you were carrying. If your character dies, the solar system that was created with him remains in the universe.
Shooting a large asteroid breaks it into 2-3 medium sized pieces. Medium asteroids break into 3-5 small asteroids. Small asteroids can be shot and broken apart into tiny bits of ore, which are collected by running them over with your ship. The smaller an asteroid is, the faster it travels. Ore pieces travel slowly. Asteroids break down into smaller pieces when they are shot or when you collide with them. Asteroids do not collide with each other. Whenever a large or medium asteroid is broken apart, there is a small chance that the pieces it leaves will be chunks of ore instead of smaller asteroids. So instead of a large asteroid breaking into two medium asteroids, it might occasionally break into one medium asteroid and one medium ore chunk. Thus there are three asteroid sizes (large, medium, and small) and three ore chunk sizes (medium, small, and tiny). Asteroids wrap to the opposite edge of a zone whenever they reach a side of the screen. They will move off the top of the screen and appear at the bottom, etc.
Merchants, Pirate and Police are all NPC ships that can wander around in the approaching port zones. You can switch between combat mode and peace mode and then hit a generic "action" button. While in war mode, the action is to fire your weapons. While in peace mode, the action is to try to talk to something. So if you go up to a merchant in peace mode and "action" it you will be requesting a trade. If you peacefully action a police ship that is following you, you will have the choice to accept or reject their search. Peacefully interacting with a pirate ship will probably be a bad idea. More specific details follow.
You may request a trade by using the action command while in peace mode near a merchant or player vessel. If it is a player, he/she will be prompted to accept or decline the trade. NPC merchants will make a similar decision. If they reject your offer, you may not ask them again for a short period of time. If they accept, a trade window will appear while still allowing you to see your ships. Also, a shield will be put up around the two ships to protect them from wandering asteroids while making the trade. The trade interface will allow both parties to select the goods they want from the other party, as well as to offer up their own goods, or remove goods belonging to either party from the current trade. The inventories of the two parties are shown along with what is currently being offered by both sides. If both sides choose to accept the deal, the trade is made. The trade window could have, for example, four panels. The leftmost of which is the other merchant's inventory, and the right most is your inventory. The middle two panels are what you are each offering. The values NPC merchants place on items will generally be an average of their value of the item in their native solar system and the value of the item at the port you are currently near. Either party can cancel the transaction at any time.
Police often float around in space near ports. They will sometimes make an announcement that they wish to search your ship. The more criminal you are, the more likely they are to search you. Interacting with the police ship while in peace mode will give you the option to either bribe them or allow the search. Corrupt cops will always take a bribe. Normal cops will take a bribe, but charge a lot more for the privilege. Honorable cops will never take a bribe. While some types of police are more common in regions with certain governments, you can not tell the difference by their appearance. Requesting a bribe and then changing your mind or failing (asking an honorable cop) will add a criminal act to your record. If they search you and you are clean, they will improve your criminal record and apologize for the inconvenience. If they search and find contraband, it will be seized and you will be fined, as well as marked as more criminal. You may also run from them instead of interacting or you can fight them, both of which are criminal actions. If you are criminal enough, the police will attack you on sight. They use disabling weapons, so your ship will not be destroyed if its shields are reduced to zero, but it will shut down and you will end up in jail, where you will need to pay a hefty fine to get out. If you can not pay the fine, your ship will be sold to pay it off, and you will be given a weak ship and the left over credits.
Each solar system is ruled by a particular type of government. Some government types only support (and can only exist) in certain technological eras. Government influences what a culture considers contraband, the trade goods the system wants to buy and sell, and the pirate and police activity in the area.
Anarchies can occur in civilizations of any technological level. Narcotics and weapons are especially popular. Games and medicine are worthless. Very little is produced in anarchies and the people typically get money through piracy and theft rather than fair trade. Anarchies never have a police force and the skies near the ports are overrun with pirates, making them prime locations both for pirate-hunting and dealing in illicit goods. Pilots with unsavory criminal records appreciate anarchist ports as havens where they can visit without being harassed by police on the way in.
Pacifists neither buy nor produce weapons. They primarily desire to keep everyone healthy and happy, and so they need medicine and games. Technological advancement is usually driven by military needs.
Communist societies can't advance past Low Tech. They have a very strong police force that is corrupt and can be easily bribed. The strong police force reduces pirate activity. Weapons and drugs are both contraband, although the people will pay well for both.
A philosophy of free trade means that nothing is contraband in capitalist ports. Merchants frequent these systems. Prices are generally average and fair.
These advanced cultures have incredibly strong pirates and police who are constantly killing each other off. This doesn't particularly bother either side, however, as all members of cybernetic citizens have backups of themselves on disk, and can be easily reloaded when they are killed. Cybernetic societies are always high tech, and constantly want to buy as much ore as possible. They have no interest in buying drugs, but don't particularly mind if you carry the pills in their systems. Being high tech, they also have no natural resources and so can't produce drugs either. Weapons are not contraband, but are heavily taxed. The police force will ask you to pay the tax if they search your vessel and find weapons in the cargo.
This government type can initially appear only in systems with a medieval tech level. Feudal cultures are constantly engaged in territory wars with nearby systems, and even with themselves. They require weapons and medicine and have no desire to buy games or narcotics. Neither guns nor narcotics are contraband, as the first is the primary import and the latter is a valuable export (if the tech level allows it) to fund the war effort. Feudalism may be established in systems that are forcefully taken over, regardless of what their existing technology level is, allowing low and high tech feudal societies in addition to medieval.
Technology Level governs which trade goods a system can produce, and in some cases also governs which they will buy.
These societies can not produce power. Their worlds are rich in natural resources. Medieval systems can't produce weapons or medicine. They will buy and use all high technology except for robots, which they can't recharge without electricity.
Low Tech societies can produce everything except for robots. They have a fair amount of access to natural resources. Their primary desire is generally robots.
There are four skills which govern how well you trade, fly, and fight.
The higher this skill, the quicker your ship turns, accelerates, and decelerates while flying the last 20 clicks to a port. Piloting skill also increases your max speed while approaching port and slightly increases the distance you can warp jump and the fuel efficiency involved in doing so.
A skilled engineer can keep his ship in better condition, taking less damage from combat, and also slightly improves the quality of his shields and weapons.
A skilled trader can get a discount of up to 10% on the wares he buys, allowing better profit margins and the ability to render a profit without as much shopping around.
Your ship is pivotal to your career as either a trader or a fighter. Your ship has some amount of cargo space, a number of gun slots, a number of living quarters for mercenaries, a current and maximum amount of fuel, various guns, a shield, acceleration, turning speed, current and max velocity, current and max hit points, some gadgets, and a name. You may greatly improve the quality of your ship by purchasing upgrades. To significantly improve your cargo space or number of crew or gun slots, you will need to purchase an entirely new ship. More expensive ships are larger and can typically hold more stuff. Some favor carrying weapons while others favoring carrying cargo. Ships also have different base movement, turning, and acceleration speeds.
You can buy weapon upgrades for your ship at shipyards. The quality of available upgrades is based on the technological level of the port you are at, as well as their propensity for war (pacifist cultures don't make particularly good weapons). Each weapon takes up some number of gun slots on your ship. Weapons can fire between 1 and 7 shots a piece, and require an equal number of cannon slots. Weapons can shoot their bursts of shots either straight forward or so that they spread out as they travel. Weapons can also be "reverse" weapons that fire out of the back of your ship and shoot behind you. These guns can really help if you don't have high piloting skill and are slow to turn around, but you will still probably want at least half of your guns shooting forward. Increasing the number of weapons on a ship decreases the delay time between shots. So if you fire one round per second with only your initial one shot laser cannon, and then buy a 3 shot spreading cannon, you will now fire every half second. The first shot will be the single cannon, and then the spread, and so on. If you then add a two shot cannon that fires straight ahead, you will shoot every third of a second, with your shots cycling between those three weapons.
![]() |
In the above picture, the first ship is firing using three shot parallel (straight forward) guns. The second ship is using three shot spread fire weapons. The third ship has three different types of guns and is alternating between them. It first fires one single shot, then a three shot parallel, and then a reverse three shot spread fire that goes out the back of the ship. If you don't like the order your guns are firing in, you can reorder or remove guns at the shipyard. When you upgrade ships, you can move your weapons from your old craft to your new one for a fee.
You can also buy shield upgrades at ports. The quality of available upgrades is based on the technological level of the port you are at. When you are hit in combat, your shields can either absorb some amount damage from the collision or they can bounce the projectile back. In the latter case, no damage at all is suffered. Upgrading your shields increases both the amount of damage typically absorbed, and the probability of a full reflection. When you upgrade ships, you can move your shields from your old craft to your new one for a fee.
You may buy gadgets at some shipyards. Gadgets can augment your skills and provide other useful abilities. If you upgrade your ship, gadgets are automatically transferred to your new craft.
The most important gadget, the pod allows you to escape from your ship in the case that it is being destroyed. Instead of dying in the explosion, you will float to the nearest port and can re-equip yourself using money from your bank account.
This is actually a gadget for you, not your ship, and it adds to your trading skill.
Your server needs to be able to specify a port when it is set up. Clients can specify a port and an IP address to connect to. Clients can make a new account or log in with an existing account. All details of the account including the player's location in the world and all relevant current statistics should be saved on the server when a player logs out. Players can send messages to all other players while in game. Chatting should not be an obtrusive feature of the GUI, because it is a minor part of the game. When the server is closed it will first save all player information (if possible) and will cleanly exit. The clients will also either cleanly exit or cleanly log out. A main menu exists with menu choices to play, quit, view credits, and receive help. Credits and help screens exist and tell a bit about the team and the game, respectively. The game must involve some kind of sprite animation. Asteroids can spin, ships can have animated fire trails, police lights can flash when they are in pursuit of a target.
Any numbers and names given in this write-up can be changed. If you would like to exert some creative freedom, let it rip and knock our socks off. Just make sure you maintain the systems and their complexity so what you do will still cover all of the grading criteria. If you have an especially rambunctious idea (like changing all of the government systems and weapon types), clear it with your grading TA before you start working on it. Player names must be verified by the server to be unique before they are accepted. You can handle the networking however you want to. In the real world, you would do all the work on the server to help make cheating harder. Anything you do client-side can be hacked (and will be hacked if the public is playing). For this class, you don't need to worry about security. As long as the clients are all seeing each other correctly when they are in the same zone and the server is staying up to date with the state of the clients you are fine.
Main Menu:
Start Server Screen:
Server Gui:
Log In Screen:
Connected to Server Screen:
Character Creation:
Anywhere In Game:
Shipyard:
In Port:
Upgrade Ship:
Buy New Ship:
Marketplace:
Bank:
In Home Port:
Warehouse:
Warp Jump and Short Range Chart:
Port Approach:
Asteroids:
Merchants:
Merchants:
Space Trade:
Police:
Jail:
Landing at Port:
Governments:
Technology Level:
Skills:
Ship:
Weapons:
Shields:
Gadgets:
Trade Goods:
![]() | Important |
---|---|
1 April 2005 - Phase 1 Due In Lab. 8 April 2005 - Phase 2 Due In Lab. 15 April 2005 - Phase 3 Due on WebWork Before 10:00 22 April 2005 - Phase 4 Due on WebWork Before 10:00 29 April 2005 - Phase 5 Due on WebWork Before 10:00/ In-Lab Demo Unlike the previous UML Lab, you are NOT permitted to submit a hand-written UML Diagram. Please take the time to do all UML electronically. Any exceptions will not be graded. |
The extra credit opportunities on the final project are extensive. You will have the ability to complete up to 50 points of extra credit which will count towards your Phase 5 Demo turn in. The list of extra credit options and their respective points values will be posted shortly to the .announce newsgroup.
![]() | Important |
---|---|
Please keep in mind the Course Policies (http://www.cc.gatech.edu/classes/AY2005/cs2335_spring/policies.shtml) when creating and submitting your project. Also remember that archives are expected to be in .tar.gz format. Any deviation from Course Policy or the requests in this lab write-up can result in severe point penalty. |