Thursday, December 29, 2011

The Big Dig

Well, I seem to have convinced myself that my next big project on the game is to finally rework the code that generates planet displays. This is going to involve moving more information into the database and reworking the engine that displays planetary surfaces. I'll probably be working on this for at least a week, if not more. This will make it much easier for me to eventually create a random planet generator, and since I'm going to need hundreds of planets eventually, I'll need to generate them randomly first then modify them. The new system should also allow more flexibility so I can put mineral resources and anomalies and other nifty stuff for players to find when they're down on the surface. Usually when I start working on this much code it leads me in another interesting direction also, so I may even dream up a new feature or two.

Sunday, December 18, 2011

Gas Giant Scooping Redux

I'm not sure what I was talking about last night when I said I had finished up Gas Scooping. I guess it was late and I was tired, because I've worked on it today for about 4 hours and I'm still not completely done with it. It is much closer to being complete, however. I've also killed several bugs in the code today and converted several more pages over to HTML5. I also spent some time cleaning up the interface and I think it looks much better than it did. Here's a shot of a ship in orbit of a gas giant.

Saturday, December 17, 2011

Gas Giant Scooping

For the past week or so I've been going through the game and fixing small problems, refactoring some code, and starting the process of getting everything moved over to the HTML5 standard, even though I'm not really doing anything that needs HTML5. Yet.

Tonight I finally jumped in and started doing some meatier coding, and I've finished up the ship action of Gas Giant Scooping by having a check performed so that before you can scoop you have to have an crew member on board with the Mining skill and that crew member must be assigned to the Specialist position on the ship.

I think my focus for now is going to be getting as much of the ship actions as possible coded out that don't involve interaction with colonies and combat. This is a blatant attempt to avoid working on the combat code since I'm still not exactly sure how I want combat to work.

Tuesday, December 13, 2011

HTML 5

I'm working on it, I swear! I've been doing some experimentation with switching things over to HTML5 and so far it's going pretty good other than a few odd quirks:

HMTML5 Quirk

Wednesday, September 7, 2011

Back Off the Road

I've been traveling for work for the last 4 months, and sitting in a hotel room just didn't lend itself to me working on the game much. I'm back now and I'm reviewing my code and my plans for the game, so I should be coding again soon.

Sunday, May 22, 2011

Still Around

I'm still around. I'm doing a small amount of work on the game, but I'm working out of town during the week and then trying to get as much time in with the family on the weekends when I'm home. I can't really get into a groove when I'm sitting in a hotel room as of yet. Look for more updates soon.

Monday, April 25, 2011

Hiatus Over

After a short hiatus for the holidays, I'm back at work on the game today. I did some work on the ship combat program, basically getting more of the initial ship information loaded up and the basic loop for combat rounds going.

This is still a very nebulous area as far as some of the specifics go, but right now I'm going with the following basic combat format:

1. Determine Initial Distance based on Sensors vs. Signature
2. Determine Maneuver Options for Attacker and Defender
3. Begin Combat Rounds
4. Attacker and Defender Move
5. Any weapons that are in firing range fire.
6. Assess Damage
7. Determine New Ship Characteristics
8. Check Sensors vs. Signature to see if Attacker can still see Defender
9. Check Surrender Conditions
10. Begin Next Round at Step 3
11. Continue Rounds until one side is destroyed or surrenders or escapes.

Tuesday, April 19, 2011

Real Life Intrudes

Got a lot of work going on in my real job and I have some storm damage in my back yard from last week that I've got to work on. Also, other than the storms the weather has been so nice that I've been out walking 4 or 5 miles a day for the past week with my boy. I'm sure this is upsetting to my one blog reader (Hi Grim!), but I'll be back to work on the game very soon, I promise.

Wednesday, April 13, 2011

Pollen, Ugh.

Very busy with other things today, and the pollen is making me feel like a pod person, so I only did minimal work on the game. I did meet my "do at least one small thing" rule today though by making some changes to the Personnel screen that gives you a bit of information if you look up someone employed by another company. Previously it had just said "Not Found." Now it gives you their name, serial number, race, and who they are employed by. Not a huge step forward, but something that had to be done eventually.

Monday, April 11, 2011

Colony Modules

More general work on colony modules today. I created the Module page so you can look at details of any module at a colony you own, and from there you'll be able to upgrade the module if you have the right materials on-hand. The upgrade portion is going to be a good bit of work, but I'm hoping to have it operational in the next few days.

I also got the basic framework for Manufacturing modules into the game, although it's not functional yet either. A colony will be able to build one Manufacturing module per colony class, and each Manufacturing module can have up to 10 factories installed, depending on the Level of the module. Each Manufacturing module will have it's own Build Queue, and the more factories it has installed the faster it can build things.

Mining modules will basically work the same way, except each colony can only have one Mining module.

I know this sounds complicated, but I think it will be a bit more clear once I get the interface up and running for it.

I also spent almost an hour just going through all the different screens in the game and tweaking some of the layout and doing some code refactoring. The game definitely looks different than it did even just a few months ago. The UI is definitely not very fancy, but I can always get an artist to help spruce things up later on. I sort of prefer clean layouts anyway.

My current goal to hit by the end of the month is to have mining and manufacturing in the game and make it possible for a ship to find a mineral deposit and create a new outpost on that deposit and the outpost will start producing minerals. This is a huge step in the game, and will mean the basic core of the game will be done, other than combat, which I had intended to be in Phase 2 anyway.

Shipyard Build Time

Ok, so I probably shouldn't write these posts when I'm so tired late at night. I neglected to run through the calculations for how long it would take for a newly built Shipyard to reach Level 10.0. Turns out it's almost 10 years!

Obviously I don't want it to take that long, and I forgot to include that the character skill Engineering will reduce that time somewhat. I'm not sure by exactly how much, but my goal is that it would take a group of players around 4 to 5 years to get a Shipyard to a high enough level to produce Class 10.0 ships, which will basically be the Dreadnoughts of the game.

There will also probably be special abilities or artifacts that can speed up the build time as well, but I haven't really got those even worked out in my head yet and they'll come in Phase 2.

Sunday, April 10, 2011

Ship Upgrades

I did more work today on Ship Upgrades. A lot of it was getting the framework expanded more and adding supporting code. I did add a Shipyard module into the game and the first one was installed at Fort Jackson in the Marvin(1) system. It's a level 2.0 shipyard and currently a ship can upgrade to Class 2.0 there.

That's likely to be the only non-player made shipyard in the game when it starts, and any player will be able to upgrade a ship to 2.0 there without having to get authorized. It will be up to players to build colonies that are capable of supporting Shipyards bigger than 2.0, and I expect this will likely take a good bit of time to accomplish. Right now I've got the build time for a Shipyard module set to 1 week, so a 1.0 Level Shipyard will take one week to build along with a lot of materials. A 1.1 Level Shipyard will take 10% longer, and so on.

Also, Shipyards will likely only be able to build at colonies of a certain class. Right now I'm thinking Class 5 colonies, but I may lower that to Class 3 but have a restriction that it must be Class 4 or higher to upgrade the Shipyard beyond a certain level.

So it may be up to two years after the game starts before player-built ships larger than Class 2.0 appear in the game. I expect to hear a lot of howling about this, but oh well. I planned from the beginning for this game to have a very long timespan and require long term strategic planning. There will be possibilities of finding derelict ships that are larger than 2.0, but these will be fairly rare and require a good bit of exploration to find.

Thursday, April 7, 2011

Comets

There are certain parts of the code I haven't looked at or tried out in quite a while, and tonight I found that comets were just barely in the game. There was only one comet in the database and it was displaying on the system map, but it had no other data to go along with it and ships couldn't interact with it in any way.

So I fixed that, and now comets can be orbited at least. Next you'll be able to scan the comet to determine some characteristics about, with the most important being the density of Monopoles. Comets are the other object that a ship with a Mining Specialist on board can harvest, resulting in the extremely rare Monopole.

My inspiration for this item came from an old, old PBM I played back in the early 1990's which I can't remember the name of for the life of me. It involved running a colony in a big circular asteroid belt and one of the items you could mine was monopoles.

I'm not sure exactly how monopoles are going to fit into construction yet, but I don know they'll be extremely rare and needed for some of the more powerful items, probably things such as certain weapons or Jump Drives or anything needing something exotic. Whereas scooping a gas giant can net a ship several hundred units of He3, it's likely that harvesting a comet will only result in a handful of monopoles.

One of the things I greatly want to avoid in the game is a runaway economy where colonies have piles and piles of unused materials laying around. I want to err on the side of being too conservative in ore deposits and other raw materials and I want to avoid as much as possible letting one single player have everything they need to build whatever they want without having to interact with other players to get any materials.

Wednesday, April 6, 2011

Ship Morale

Well, I couldn't sleep, so I went ahead and finished implementing Ship Morale decay. Ships should lose 0.1 Morale every 86400 seconds now. For now it will just go down to 0.0 and have no further effect, but implementing the Mutiny/Derelict code is going to be a fairly involved process so I'm going to table it for now. I will slowly add some effects of having medium or low morale in the next few weeks as I touch other things, like affecting the time it takes to complete actions or how much He3 you harvest from Gas Giants.

I'll also be adding the Shore Leave ship action at colonies. The basic action will just give a large boost to your ship's Morale level. When it's finished it will cost the ship owner stellars to grant Shore Leave. The higher rank your crew members are, the more it will cost, which will simulate the higher pay that higher ranks get. The colony you grant the Shore Leave at will receive some percentage of this cost, depending on the level of their Entertainment colony module. So a 2.5 level Entertainment module will mean that the colony will get 25% of what is spent by ships on Shore Leave, and a higher level module will give a higher morale boost.

Ship Upgrades

I'm about 50% finished with the code to let ships upgrade to the next class at colonies. Actually, that's not completely accurate, since it is possible right now for a ship to land at a colony and issue the Upgrade command and go up to the next class level.

Of course, this is wide open right now, and any ship can land at any colony and issue the order successfully. Now I'll have to make it actually require some type of construction materials and currency, and restrict it to only being allowed at a colony with a shipyard of the appropriate level that is owned by the same player.

In order for ships to be allowed to upgrade at a colony not owned by the player, I plan to have it so that colony governors can allow any ship to upgrade at a set price or a governor can issue Upgrade Authorizations which will allow a ship to upgrade to a set level at a set price.

So a governor at a colony with a Shipyard Level 2.4 would be able to issue an Upgrade Authorization that would allow shipID #2324 to upgrade to level 2.0 at a cost of 200 stellars per 0.1 level. Or you could allow a player to upgrade any of his ships to a certain level at a certain cost.

Now that I read this again, I'm probably only about 25% done with Ship Upgrades. Heh.

Monday, April 4, 2011

Skill Ups

Mostly odds and ends taken care of today. I did finally add the code to give ship crew members a chance to gain skills upon completion of actions. So far I've added it to Planet Square Scans and Asteroid Scans.

Here's a screenshot of a report after a successful scan that shows the Science Officer increasing his skill.

I'm currently using the following formula to determine if you get a skillup:

ran(1,200) < (10.1 - Current Skill)*10 = + 0.1 skill increase

For example, if your skill is 0.1, then you have a 100 base chance to get a skill up. The system then gets a random number between 1 and 200. If it comes up less than 100, your skill goes up. I may make some skills harder than this, and will likely make it so that some skill can only go past 5.0 by participating in combat.

Using this method, it will take an average of roughly 800 to 1000 attempts to reach max skill level. This should translate into literally years of real time before a character maxes out the skill, especially with some actions that take a long time like Jumping to a new star system, which is the only way to raise the Astrogation skill.

Sunday, April 3, 2011

Weekend Update

The good news is I'm over my blah feelings from a few days ago. I just needed some time vegetating on the couch and some extra sleep and a few games of Axis and Allies : War at Sea with my son to clear my head.

No major updates in the last few days, but I have been working on a lot of small stuff that will eventually lead to some major changes.

One thing I did add this weekend was a new position to the ship's crew called Specialist. This position will be used to check for skills like Mining that will allow for better Gas Giant Scooping or Comet Harvesting. My vision for now is that most skills can only be raised during "field work" on board a ship, so if you want your mining outpost or colony to have a better mining administrator he's going to need to get some experience out in space first.

I also started getting the framework ready to implement Morale for ships and colonies. Morale on ships will decrease at a steady rate, likely 0.1 per 24 hours, but there are other things that can affect it in more drastic ways like a Misjump or being involved in combat. Ships will need to visit colonies and issue the Shore Leave command to raise morale. Ships with lower morale will face penalties in using the skills of their personnel, and ships with very low morale may face mutiny. This will basically be a way of removing unplayed ships from the game without the GM having to intervene. I'll probably have it so that 0.1 class ships that go to 0 morale just disappear from the game so there won't be too many of them clogging things up.

Friday, April 1, 2011

Blah

Nothing major today, just some small changes to help setup more work for the combat program and a few new colony modules. I'm fighting a small amount of burnout so I'm likely to take the rest of the weekend off and go out and enjoy the weather.

Wednesday, March 30, 2011

Begin...

The title of this post comes from the name of an old game we used to play way too much back in the mid-80's at the University of Alabama on the dorm computers. We always loved the simple title of it. Just "Begin".

I bring this up because I began the process of adding ship vs. ship combat in the game today. It's still got a very long way to go, but you can click on an enemy ship now and bring up the combat screen, even though it doesn't do anything right now except check that the two ships are in the same location and don't belong to the same player. I'm trying to build the distrust of the data passed to the screen in from the very beginning this time.

So after I got that basic setup done, I went back and started adding a few things I'll need for combat, like ship signatures and sensor ratings. Basically, a ship's signature is calculated by CLASS + ARMOR - CLOAKING. So a new Class 0.1 ship would have a signature of 0.1. Cloaking can take this to a negative value, but new ships won't start with cloaking. So then if you take the signature value and add to it the Sensor value of the opposing ship, if that value is over 0.0 then the opposing ship can see you. So without some time of cloaking, all ships will be visible.

I can then use that derived value to help determine how close the two ships are to each other when combat starts, modified by certain things which I haven't fully fleshed out yet.

Lots of progress has been made in March. I'm looking forward to seeing what I can get done in April.

Tuesday, March 29, 2011

Asteroid Fields and UI

Lots of work today on the ship interface for asteroid fields. I'm pretty much done with landing on an asteroid and scanning asteroid squares, other than adding a check to see if the crew member associated with each action gets a skill bump.

I also did some work on adjusting the layout for the ship screens, since I wasn't really happy with it yet. I'm still not completely satisfied, but it's better. I generally like to go with a nice clean interface that isn't cluttered up with a lot of noisy objects, and sometimes I have to remind myself of this like I did tonight.

I've also made myself a major to-do item to harden the code around setting new actions for ships, since I discovered several security holes that would let someone get their ship severely out of whack in the database. Mostly this just involves not trusting the input coming in via the GET or POST actions.

Monday, March 28, 2011

Asteroid Fields Continued

Today was mostly trying to completely finish up the Asteroid functionality with regards to ships. Ships can now land on asteroid squares and by tomorrow ships will be able to scan asteroid field squares that the player does not have currently in their library.

I decided to go ahead and make a player scan every possible square in an asteroid field to reveal the squares, as opposed to only making the player scan squares that actually have rocks in them. My reasoning for this right now is that I want the exploration of asteroid fields to be long and tedious, since these fields are going to yield the best rewards in the game for minerals. This also makes a complete scan of an asteroid field a valuable commodity. I may revisit this in the future, but for now I'm going to go with it.

I'm also trying to do some testing on the asteroid field code at the same time, and have closed up several vulnerabilities that would have allowed the player to cause mischief.

Thursday, March 24, 2011

Success!

I completed a fairly large step in the game development today, and for the first time a new resource was created by a ship completing a Scoop Gas Giant action, as shown in the report sent below. Before today all items in the game were created by me running SQL queries directly on the database. This means that the first block in the resource pyramid leading to in-game production is complete. The next step will be ships being able to Harvest Comets and then building mining outposts on top of mineral deposits found on planets, moons, or comets.

Wednesday, March 23, 2011

Cargo

More cargo work today since I found another corner I coded myself into. Turns out that since you can remove all the Cargo Modules off a ship, that leaves you with a zero sized cargo hold so once I forced the cargo moves to not be able to overload a ship then you couldn't put a Cargo Module back onto the ship in order to install it.

I thought of several ways to get around this, but what I ended up doing for now is that if you have a 0/0 cargo hold on a ship, you're allowed to move one Cargo Module over to temporarily overload the ship until you install that module, which will give you a 0/500 cargo hold at that point and let you resume normal cargo operations.

I'm heading out of town tomorrow until Sunday, so there probably won't be much going on in the game until next week.

Tuesday, March 22, 2011

Coded into a Corner

Not much going on today. I had dinner after work with some colleagues in from Atlanta.

I had intended to wrap up some of the work on the Scoop Gas Giant action tonight, but to do that I needed to do some work on moving cargo around. When I dug into that code I realized I had coded myself into a bit of a corner last month where my Move Cargo code worked great but didn't necessarily know if it was moving cargo from a ship to a colony or vs. versa.

So I had to redo some functions I had that returned the amount of current cargo and the max cargo, which will allow me to make sure when you scoop up that He3 from a gas giant you don't overload your cargo hold. This side trek does let me cross off one item from my todo list, which was to make sure that the Move Cargo functionality respects maximum cargo hold size, which it wasn't doing before.

Sunday, March 20, 2011

Cargo and He3

So today I decided to work on ships being able to scoop gas giants. It turns out I haven't had a ship orbit a gas giant in a while, so first I had to fix a lot of bugs that have crept in. Then I got the Scoop Gas Giant action 95% complete and had to switch over to Cargo for a while.

I hadn't put in the code to calculate how much space a ship's cargo hold had remaining, but that's in the game now. The next step is to use this information to enforce limits on items being put into the cargo hold, whether you're transferring items or basically creating a new item in the case of the Scoop Gas Giant action which is the source of He3 in the game. He3 will be used by ships for moving and jumping to new systems, and will power Fusion Reactors at colonies. It will likely also be used in the construction of some items in the game. He3 will basically be the lifeblood of the game, and will make Gas Giants and some comets very valuable resources.

I'll have the new action and cargo hold limits wrapped up by tomorrow night.

Friday, March 18, 2011

Colony Governors

It's now possible to add and remove colony governors and the colony interface screens are coming along nicely. It's not ready for screenshots to be posted, but maybe sometime next week it will be far enough along to show off.

Thursday, March 17, 2011

Scans

Not a lot going on today, but I did make some changes to the way ships find Interstitial Access Points (IAPs). IAPs are basically wormholes and are how ships jump from one star system to another. To find an IAP, a ship has to be in a space square and use the Scan System Square command, which will probably take about 20 minutes - the Sensors skill of your ship's Science Officer.

Once the scan completes, if you're in the same space square as an unknown IAP, your ship will discover it and it will be added to your company's library. If you're not in the same square as an IAP, the report generated will tell you approximately how far away you are from the nearest unknown IAP. This will allow you to triangulate in on the unknown IAP until you finally discover it.

Originally, I had it set so that the scan just told you how far away you were from the closest IAP, even if you already knew the location of it. I thought that might be too frustrating though, so I've changed it to this new method.

Tuesday, March 15, 2011

Colonies

I was staring at the list of what is left to do for ships and realized that I needed to do some work on colonies first. Ok, ok, I didn't really have to, but I've been doing stuff for ships for weeks on end, and I finally got tired of staring at empty colony screens.

I'm not ready to post any screenshots by a long shot, but colonies are slowing becoming more than just a place for ships to land. In the process, I've firmed up some of the design for colonies, which I need to update in the Wiki at some point. Ok, ok, I need to put anything at all in the Wiki at this point since it only really has one page right now.

My artist has been trying to cheat me on pixels lately, but after administering a light flogging to him I've just about got all the asteroid graphics into the game now and I've been working on the tools used to build asteroid fields to make them easier to work with. It looks like I spoke a bit too soon about getting away from Firefox, since Chrome doesn't seem to handle large numbers of small images on a page very well. After I submit, Firefox does not reload every image, but pops up almost instantly, where Chrome seems to want to download every image again.

Monday, March 14, 2011

New Employees

I updated the Hire New Personnel page recently, so that you can hire new employees using credits and they will have relevant skills depending on your choice. Right now you can choose Command School, Engineering School, Academy of Science, or School of Management, and the new employee will have 0.1 skill in whatever skills match those choices.

Later on, I plan to make this process a bit more complicated, and add a small amount of randomness to the process. I'd love to come up with a way to have the employee creation system be a sort of homage to the old Traveller rules and the character creation in Ultima IV where you had to answer a series of questions to determine what kind of character you started with.

I'm still pondering on how to do this without just ripping off the Traveller system. For now, it is possible to get the employees you need to run the various functions that ships need.

Thursday, March 10, 2011

Asteroid Fields

I'm about 95% complete with the new Asteroid Field functionality, so I think it's safe to show off the first screenshot, featuring the view from a ship inside an Asteroid Field.



This screenshot features every type of asteroid except Carbonaceous. There's even an exotic asteroid hidden in there. This is just a small 13x13 section of a field, which can be up to 23x23 squares wide. I'll probably push that up to 25x25 before long since I'm just going to assume that most players will have good screen resolution and if they don't then they'll just have to use the scroll bars a bit more.

Ditching Firefox

I've been using it for quite a while now, but today I finally decided to stop using Firefox in favor of Google's Chrome browser. I probably should have done it a long time ago but the straw that broke the camel's back was a bug where Firefox ignores the CSS defined for Font size and uses the default size that you've set in Windows 7. Even Internet Explorer doesn't do this. Supposedly there's a workaround for it in FF, but screw that. I just want it to work.

So far there's been zero compatibility problems with Project Libertine and Chrome. It's also faster and the Chrome browser still uses the Firebug plugin flawlessly. Chrome also makes Google Apps like Gmail work better, so I'm pretty happy with the switch so far.

Monday, March 7, 2011

Asteroids

The Asteroid Field rework is coming along nicely. I've got the library view of Asteroid Fields done, so now all I need to do is get it working on the Ship View and add the necessary ship actions that will allow a ship to enter the field and land on asteroids and what not.

I've also got to import all of the asteroid images that Jake sent me. He went a little crazy and I probably have about over 1600 asteroid field images to get put into the system and setup properly. It's a little nutty, but the variety available means there will never be two asteroid fields in the game that look alike.

I'm not quite ready to put up a screenshot yet, but I'll get one out by the end of the week.

Sunday, March 6, 2011

Weekend Update

Recent work has been mostly more cleanup. I've got the look and feel of the ship interface pretty close to how I want it, but I will let a real artist have a go at sprucing it up some in the future. Right now it's pretty plain and utilitarian, but that sort of appeals to me in a way.

I've also been doing some planning work and pretty much have the road map laid out to finish up ship functionality. It's a larger list than I thought, and will require some colony functionality as well, but I'm chewing up small chunks of the work at a fairly regular pace these days. I try to make myself commit at least a few lines of code each day, even if it's just fixing a bug or adjusting the look and feel just a bit.

The next major chunk I've started on is a total rewrite of the asteroid field functionality. I had originally intended each asteroid to be a separate small planet that you would orbit and land on, but I didn't really like the way it was looking and didn't want a huge list of 20 to 30 rocks that you had to choose from. After getting the asteroid graphics back from Jake last year, I had an "Asteroid Epiphany" and decided that I would make asteroid fields be just like planet maps.

Instead of "orbiting a planet" you can "enter asteroid field" and something like a 25x25 map will be displayed, with the asteroids being made up of squares on the map. A lot of the squares will be empty space that you can't interact with, but the others will be treated just like planet squares that you can scan or land on.

I should have a screenshot up later this week. I think it's going to look pretty sweet.

Wednesday, March 2, 2011

Update

I've been doing a lot of cleanup work and have slowly added a few new features, but it's mostly just steadfast avoidance of reworking the planet code, which is probably going to take several days of work to finish.

I have added a method for ships to detect when other ships are present to the game again. At one point I just generated a list in the Ship Actions area, but since I didn't want to have to implement a scroll bar if the list of ships was long, I decided to have a graphical proximity indicator that doubled as a link to take you to a new page that will show a list of ships that are present and give you options to attack or scan them.

Here's a screenshot of how it looks at the moment. I'm not completely happy with how it looks or the placement yet, so it will likely change several times before I settle on something.

Sunday, February 27, 2011

Planets

I've been working on the planet screen a bit, but I'm really just avoiding the fact that I need to tear apart how I'm doing planets and make some major changes. I'm not currently storing enough information about each planet square to make it interesting at all, so I need to be able to store the terrain type, secondary type, and a short description if there is something there besides the default terrain. I also need to rebuild the GM tool used to build planets, since it's currently not user-friendly at all and eventually I'll need help building the hundreds of planets the game will have to start with.

Friday, February 18, 2011

Ship Configuration Update

I've spent most of my time lately on cleaning up some bugs I've found in the code and tweaking a few small items here and there. I did rework the Ship Configuration screen and now have it pretty much in its final form. I added sortable tables for each section and a lot more useful information for each module is being displayed. I also added more safeguards to prevent cheating since until today it was possible to pass a direct URL and add more modules than you should be able to for a given ship section. The only thing I still need to do for this screen is to make the module names links to the Item Details screen, but I haven't implemented that yet so I'll go back and add the links once I do add that screen to the game.

The ship functionality is slowly getting closer to completion, so I should be able to start working on resources and colony functionality within a few months.

Monday, February 14, 2011

Ship Speed

Ship speed is now being calculated based on the type and number of Slipdrives installed on the ship, instead of just being hardcoded in the database. I just need to determine the final base speeds of certain actions like entering/leaving orbit and landing on planets.

The preliminary times I'm probably going with are:

Entering/Breaking Orbit : 10 minutes
Landing/Taking Off : 15 minutes
Docking : 5 minutes
Entering Asteroid Cluster: 10 minutes

These are all based on a 1.0 speed ship. I'd like to make some of the times also be based on how big an object is that is being orbited, so smaller worlds would take less time to land or take off from.

Sunday, February 13, 2011

Cargo Moves

I've got the basic Ship Cargo screen finished. A ship can now land at a colony that is owned by the same player and move cargo between the ship and the colony. While I was working on this, I decided to make a fairly major design change to simplify my life in coding and in the way the game is played.

I had planned for ships to take a certain amount of time to unload/load cargo. So it might take 10 minutes to unload a module, in which time the ship would be placed in Cargo Handling status for 10 minutes and wouldn't be able to initiate any other actions other than moving another item, which would extend the time out by 10 minutes. The item being moved to the colony would then not be available to the colony for until those initial 10 minutes was up.

I had planned on doing this by having an "available" column in the item table in the database, so when a ship moved a Command Module over to a colony the "available" column for that item would be set to a Unix timestamp 600 seconds in the future, and the colony would not be able to have access to that item until after that amount of time had passed. This is fine for modules and the like, which aren't stackable, but for things like ore, it would mean a ship moving a stack of 100 ore over to a colony that already had ore on hand would create a new stack of ore in the colony that wouldn't be available for 10 minutes and then the colony owner would have to consolidate those stacks. At an active colony this could lead to dozens of stacks of the same type of ore, and it would be more complicated to figure out which stack of ore to use first for production and such.

So, I've made the decision to just have the ships alone pay the time penalty for moving cargo. Anything moved from a ship to a colony will be instantly consolidated into the colony inventory and be available at the point the item was moved, while the ship will still have to wait for the action to complete before it can do anything else. This won't really matter when moving things from a colony to a ship since the ship will have to wait out the cargo action regardless.

It's not really the way I'd like to do it, but it makes things a lot simpler and will lead to getting the game playable sooner.

So here's a list of things a ship can currently do in the game.

1. Land on a planet at a certain square or at a colony.
2. Lift off into orbit of a planet.
3. Leave orbit of a planet.
4. Perform an overall mineral scan of a planet.
5. Perform a scan of a certain square on a planet. (Reveals that square on the planet map.)
6. Move to a new space square on the System Map.
7. Jump to a new star system via an Interstitial Access Point (IAP).
8. Perform a system scan to put the System Map in the library and reveal the distance to the closest IAP. If performed in the same space square as an unknown IAP, this will add the IAP to the library.
9. Install/Uninstall ship modules.
10. Move Cargo to/from a colony with the same owner.

Upcoming Ship Actions
1. Harvest comets.
2. Scoop Gas Giants.
3. Buy/Sell at colony markets.
4. Scan other ships.
5. Attack other ships.

Thursday, February 10, 2011

Cargo

Today's project is to finally finish the cargo move functionality, which is going to involve a lot of code refactoring. This will let ships move items from their cargo holds into the cargo area of colonies that are also owned by the player. I had a half-assed version of this done a while back, but the data tables have changed a bit in the meantime and it never really worked right anyway.

This is fairly complicated functionality, since a player will want to move partial stacks of items, which is different from moving an entire item. So for example, if a player has 100 Precious Metals ore on their ship, they may only want to move 50 of them, which involves possibly creating a new stack of that item in the colony unless there is already a stack of Precious Metals there in which case it would just add 50 to it.

At least I already have the interface in place, I just need to get all of the functions behind the scenes working correctly now.

Wednesday, February 9, 2011

Ship Configuration Update

I've got the basic functionality of the Ship Configuration screen working now. A player can now install modules from the Cargo Area into either the Command, General, or Engine section, depending on what type of module it is.

So all of the necessary modules for a basic ship are now in the game, but they don't currently actually affect anything. The next step will having the installed modules effect the ship, so the ship's maximum cargo will be calculated based on how many Cargo Modules are installed, and the ship's movement speed will be calculated on what Slipdrives are installed and what those drive modules are rated.

Here's a screenshot of the current Ship Configuration with my test ship shown. I'm going to make this a little prettier very soon, but it does what it needs to do.

Tuesday, February 8, 2011

Ship Configuration

My current focus is on the Ship Configuration Screen.

Each ship will be composed of three major sections: Command, General, and Engine.

Each section will slots that will hold modules. The number of module slots a ship has is based on its class. So a 0.1 starter ship will have 1 Command Slot, 1 General Slot, and 1 Engine Slot. If you upgrade your ship to be Class 0.2, it will gain one extra General slot and another General Slot for each advance up to 1.0, at which time you will gain one extra Command and Engine slot.

So a Class 1.1 ship will have 2 Command Slots, 11 General Slots, and 2 Engine Slots.

General Slots will hold Cargo Modules and more specialized modules like Fighter Bay Modules, Weapon Modules, etc. Each Cargo module you have installed will allow your ship to carry 500 mass units of cargo.

Command slots will hold things like Command Modules and other modules I haven't invented yet, but possibly things like Sensor Modules and things that make a ship fight better. It will also be able to hold Science modules that let ships perform better research out in the field.

Engine Slots hold either Slipdrives or Jump Drives. Slipdrives are rated from 1.0 to 10.0 and the speed of your ship will be determined on the rating of your Slipdrive compared to how many modules are installed on your ship. Each slipdrive can push up to 10 modules at full speed, so a 0.5 Class Ship with a 1.2 rated Slipdrive could move at 1.2 Space Squares per Hour when traveling on the System Map.

Right now I'm working on players being able to install and uninstall modules on a ship that is landed at a colony. After that I'll be able to modify the new ship creation to have basic modules installed upon ship creation.

Saturday, February 5, 2011

New Player Setup

Except for a few small details, I've got the basic new player setup complete. You name your ship and the captain on the same screen and the new captain starts with 0.1 in all but the basic science skills. The basic 0.1 Class Ships will be able to fly with just a captain on board, who can handle routine tasks, but the captain won't be able to get skill advances for positions he's covering for.

So a captain will start with 0.1 in Astrogation, but won't be able to advance that skill by jumping to new systems. Only personnel assigned to the Navigator position will be able to do so. The Captain will be able to advance Tactics and Command. This is all tentative of course, and could definitely change.

As ships get larger they will require more crewmembers, but I haven't exactly worked out how that will be in the game as of yet.

Here's a screenshot of a new ship Captain I created today.

Friday, February 4, 2011

New Player Setup

I've got the basic version of the New Player setup working now. It creates a new ship and a new employee as the captain and the ship starts out landed at a colony. This is actually nice for me since up until this point I've been creating ships directly in the database. This was also a good path for me to work on right now since I found a problem with the way the ship code was handling unassigned personnel and was able to fix that as well.

Now I just need to add a few finishing touches like giving the new captain a few default starting skills and then I can start working on adding ship engines to the game and having ship speed be based on what engines are installed in the ship.

Monday, January 31, 2011

Resuming Progress

I'm working on the project again. I reworked the code to display stars that take up multiple squares. Here's an example of the Type O star, which looks great. It will actually have even more squares in the final version.



Now I'm focused on finishing up the New Player setup for your first ship and crewmember. This actually forces me to work on several other supporting areas like engine sections, engine items, and all the other supporting items needed to get a basic ship and new captain setup at the starting colony.