Pre-Order the Game!

Desura Digital Distribution

Monday, December 26, 2011

Data Driven Fleets done!

I've overhauled the fleet/ship system in the game so that it's now data driven. In the data file, I've specified three ships for the first system, and two ships for the second system, and no other ships. You can see that two systems have a fleet adjacent to them, but no other systems. This matches the data files exactly.



Not shown, but in the design screen, when you open it for the first time, you see the design of the first ship in the data file.

Now, how does data work with ships? There's an element named "StartShips" that contains all the ship designs (note, if your StartSystem references to a ship that's not listed, it will give you an error)

Each Ship have four attributes:
addToBlueprints - Should this design be added to the list of available designs for the player to build? If you want to create a game where a race starts off with an ancient but advanced ship, but can't build more of those until they've researched all the required technologies, you can do so!
name - This is also used in StartSystem that references to a particular ship
size - Must be one of the available sizes, or it will throw an error
style - Must be within range of available styles for that size, or an error is thrown

Each ship have a list of Equipment, with each equipment containing four attributes:
mainItem
mountItem
modifierItems - This is one value, with each item separated by a comma.
count - amount of this

You can create the classic two scout and 1 colony ship starting scenario by specifying this in the home system (with the corresponding ship designs already specified in list of ships):

[Ship name="Scout" count="2" /]
[Ship name="Colony Ship" count="1" /]

In fact, that's what's shown above in the screenshot.

There are some bugs and stuff that I need to refactor, then I'll start on the production screen.

Edit: Forgot it don't like the special characters for XML code...

Friday, December 23, 2011

Starting Systems data done!

I've changed from code-driven to data-driven for starting systems! Next up is starting ships, then I'm done with data conversions!

I want to explain how it will work with the data for starting systems. In each race data.xml file, there is one element named "StartSystems". It contains a list of elements, all named "System". It will process each system starting from the first to the last as in it will place the first system first, and so forth.

Each "System" have three attributes:
override - Should this system be cleared of all planets before proceeding with planet placement?
inOrder - Should the list of planets in the data file be the same order in the system in the game? Only applicable if replacePlanets is true. This is useful if you want to create a specific type of system. For example, if you want to create a Sol system for human, you can specify this to be true, then set dead, toxic, terran, barren, asteroids, gas giant, gas giant, gas giant, gas giant, dead planets, and it'd be the same layout as the actual Sol system.
replacePlanets - If you want the listed planets to replace the existing planets (for example, if you only have one planet listed, and want to replace one planet, you set this to be true). If this is set to false, then the planets will be inserted at random among the existing planets.

Each "System" element contains two list of elements, "Planet" and "Ship". Each "Planet" element is a planet that contains three attributes: owned, population (only applicable if owned is true), and type. Each ship is the name of the ship design that you've specified earlier in the xml file, and amount of that ship. So you can have one system to start with 2 scouts, and a second system to start with a colony ship. This is not implemented yet, as mentioned earlier in this post.

Here's a screenshot of me with Humans race that I've specified 7 starting systems. Note how they're all clustered together? This is because of the algorithm I wrote to ensure that they're not randomly scattered all over the galaxy.



I know I said I'd be busy during Christmas vacation, but I had some extra time, so I got busy on this game! So I didn't lie, technically...

Thursday, December 22, 2011

Target Release Date

Due to circumstances in my life, I need to finish this game soon. I've decided on May 31st as the target release date. What this means is that I will focus on the gameplay mechanics and making the game playable. It may mean that there may be only four races to play with (there's a new one in works), weak AI (the support for AI scripting will be there though), imbalanced technologies, and not many sounds/music at release. However, they are all contents that can be easily tweaked and added without altering the game's code. All the gameplay features that I discussed (stacked/single ships for example) will be implemented by then!

I plan on supporting the game after its release, by improving the AI, adding new races, balancing the technologies, bug fixing, etc. But those requires a lot of players' feedback, so I guess you could technically say that May 31st will be the end of the Alpha version, and the Beta testing has begun. However, it will be a full release, because it will be feature-complete, and people can mod the data.

That's the plan, I'm going to try and finish up the game before May 31st!

Wednesday, December 21, 2011

More work on Race Data

I've fully replaced the old text file with the new XML system. I also started work on replacing some of the hard-coded values with data-driven. So far, I've made the game to load the sprites based on the XML values, and updated the game to handle the new system. This means that you are no longer limited to 6 ships per size, 5 sizes plus one big ship. You now can have 2 ships for size 1, skip sizes 2 to 6, have 15 ships for size 7, and the game will handle all of that!

I also added default ship names loading. So for example, if you have names "Doombringer", "Slayer", and "Despair" for size 2 ships, when you select size 2, one of those name will randomly be selected to fill the name text box. Of course, you can change the name. This system is similar to MoO 1's ship naming.

When I finished all of this, I ran into some bugs with the dropdown menus that I didn't encounter before, and fixed those. Now it's all working flawlessly! However, when I selected the biggest ship (it wasn't loaded before), I see a problem in the design screen. So I'm going to scale all the ship sprites to the same size in the design screen to fix this problem. Here's a screenshot showing this, and what I have so far!



After that's done, next up is the loading of starting ship/system information! Then the data driven conversion is done! Whew! Getting there...

Monday, December 19, 2011

Race Data Started!

I've started work on the new race data file. The old system used a text file with ugly structure, and the rest of the data (ship sizes and styles, as well as starting system/planet stuff) are hard-coded.

The new system uses a xml file that will be flexible in allowing you to specify different stuff for a race. I've created new xml files for each race, and is now in process of phasing out the text files. The xml files have everything, I just need to modify the game's code to use that.

So far I've modified it to load in the race's name, description, and some of its attributes. Here's a screenshot of the Zero People in the race selection using the XML data:



Now, for the starting system(s) for your race, I think I've worked out a good system (pun not intended). The race will have an element named "StartInfo" that contains all the starting information for that race. It have "System" elements, one for each starting system (it's possible to have more than one system, the game will try and make sure that the race's systems are near each other, not scattered randomly across the galaxy). In the "System" element, there is an attribute "override" that is either "True" or "False". If True, then the system's randomly generated planets will be discarded, and it will load in the planets. If False, then it will randomly replace a planet with a planet in the data. If not enough planets in the system, it will add more planets.

In the System element, there are two types of elements: "Planet" and "Ship". Planet have "type" attribute for type of planet, and "owned" dictating whether or not that planet is owned by that race. Ship have "size", "style", and "name" attributes, as well as "Equipment" elements that tells the game what the ship have.

All in all, this should allow users to create custom campaigns (maybe a zombie race that starts on 25 systems and a lot of junk ships, and you start with only one planet and a couple of ships and your mission is to eradicate all the zombies? :) ), or simply just follow the classic 4X game setup (1 planet per race, along with 2 scout ships and a colony ship)

This system will also be similar to how events will be done in the game. More on that later when I actually get to it.

Friday, December 16, 2011

Reminder to Self - Don't post while half-asleep!

It looks like I didn't really finish my post, and just hit publish :)

The reason why I'm scrapping the "construction platform" that you have to build at a star system is because of the new "special equipment" you can add to a ship. Remember that the game supports both starships and system ships. Which means you can build a system ship that aren't going anywhere, with the special construction equipment, and you've essentially got a "construction platform"

I also thought, why not allow ships without engines at all? They'd still require reactors, but they'll be essentially space stations, unable to propel itself anywhere. But it will free up some space for weapons and other stuff. Also, ships with only stellar drives can travel to different stars, but in combat it can't move, making for interesting designs!

I'm also thinking of making Stargates just one size, big enough to allow whatever through, because it'd be very confusing to see two systems with stargate icons, but your ships can't go through. So it will be an "on/off", it's either there or not. Any ships can travel through stargates, even if they don't have engines. Think of tugboats pushing them into stargates :)

To terraform a planet, you will need either a ship with construction platform, or a planet that has a base on it, in the same system as the planet that you want to terraform. Terraforming includes building planets out of asteroids and gas giants.

Refitting a ship will require the same requirements, a planet or a ship with construction. To refit a ship, you just select a ship to refit, then a list of same-size designs to refit the ship into. For example, if you have a scout with one laser cannon, and you've designed a new scout of the same size, but with a rail gun and a shield, you pick the old scout, then pick the new design, and hit confirm. It will be cheaper than building a new ship.

The construction platform special equipment will take up so much space and be very expensive, so you'll have to use a hull big enough to support a platform. I'm thinking of making it so only the biggest hull can support such a platform. Of course, this will all be data driven, so you could create a technology item that allows you to put on a construction platform on the smallest hull and cost only 1 BC :)

I looked at my code, and realized that there's a few more stuff that need to be converted to use data before I can add production screen. I need to flesh out the special equipment/technologies a bit more to allow for colonization and ship production from special ships. Then I'm going to change the home system code to use the data for setting which ships/planets/systems you start with. When that's done, I will then work on the production screen and colonization prompt, as well as invasion/transfer prompt. Then the game will be kinda playable again!

Thursday, December 15, 2011

Ship building/refitting and Terraforming

There's not much going on code-wise because I was trying to work out a balanced approach to ship production that will work for both space-based and planet-based races.

I didn't like the idea of a "building" that you need to build in a system to build ships, so I'm scrapping that system.

I considered different new options for this:

A system where you're required to establish an base on a planet (don't have to have people there) in order to build ships
A special component that you can add to a ship that allows it to "build" ships, or in other words, be the place where you assemble new ships at (mobile construction platforms)

A friend told me to just make the game work, then deal with balance later. So that's what I'm doing. I'm going to implement both systems above, then deal with balance later.

The idea is that if you've selected a ship that has a construction special, when you finish the new ship, it will spawn where that ship is. Those kind of ships will be massive and expensive, so you wouldn't want to put them in front of the battlefields. They will be prime targets for your enemies!

Planet-based ship construction will follow the classic 4X system, you build a ship at that system with that planet, and presto! A ship spawns there.

This upcoming week and next will be very busy for us (Christmas), so things may be a bit quiet around here for a bit, but don't worry, I'm still devoted to this project.

Meanwhile, here's a screenshot of a couple of new stars that I've added to the game!

Tuesday, December 13, 2011

Descriptions!

Yay! Descriptions are now working with planets and stars! Here's the screenshots. Top one is of a planet, and bottom one is of an unexplored or uninhabitable stars (like black holes)



That little thing added a lot of life to the game! Makes it feel more personal somehow. There's one bug that I need to squash, then it's on to production screen so you can actually build the stuff that you've designed!

Monday, December 12, 2011

Stacked Ships vs Single Ships

A person commented on my change from stacked ships to single ship system, and I was about to post a comment providing explanations on why I changed it when I had a thought. (The post is here)

Originally, the reason why I changed to single ship was due to diplomacy/reserves/space races/population transportation in individual ships/some other reasons that I've forgotten. I also wanted to have a X-Com-esque combat where if you miss, it physically miss and can hit another ship (even a friendly ship), allowing for fantastic technologies.

However, when I started to explain that, I realized that the biggest goal of Beyond Beyaan is to make it moddable, and that means giving more options to the players. So I thought about what would require to support either single ships or stacked ships.

Inside the game code, there'll be minor changes (a boolean value indicating whether or not the game uses stacked ships) for handling fleets, nothing too major. However, the biggest "design" and "UI" changes will be as following:

The UI will need to display the ship number, and a slider for selecting amount of ship for fleet UI. Single ship system will use the current fleet window. So I will need to add a new fleet window class that's for handling stacked ships.

Single ships system can have their components damaged or destroyed, requiring repairs (basically refitting), while stacked ships can't have this due to simplified UI. So stacked ships will act like MoO 1's, all components working until hp hits 0. Then that ship is destroyed, and the next damage will apply to the next ship in the stack. However, you can still upgrade/refit ships in both systems.

Firing weapons (this was one big reason for me changing to single ships) will result in a "stacked" fire. This means if you have 100 scouts, each armed with 3x laser cannons, the stacked ship will fire three times, with 100x damage each firing.

I will need to add "streaming" support, in that if a weapon is streaming, it carries over leftover damage to the next ship if the current ship is destroyed. In Single ship system, this will mean that the weapon continues on its course with leftover damage until it hits another ship or leaves the combat field.

However, all of those changes don't require a lot of work, but will make more people happy (if they want games with stacked ships, they can choose that, or choose a game with single ships). I will add "gameConfiguration.xml" that sets whether or not a mod uses stacked ship, as well as if technologies are removed from a field when one technology is researched. In-game options will be minor options that affects small things, while gameConfiguration.xml will contain major game-changing settings.

I will add this after I'm done with the screens and saving/loading games, but before I add space combat. When I add space combat, I will have both systems implemented and ready for me to test them both. That way, I will avoid coding in a way that will restrict me from adding one system or another.

This isn't a result of me being unsure on design for my game, this is a result of me trying to make the game more mod friendly. My fear is that there may be no other turn based 4x games anymore, the trend is real time 4x. I want to provide a game that allows people to create their own 4X games without having to develop everything from scratch. I hope that this will make people happy :)

Sunday, December 11, 2011

Data Driven Stars and Planets almost done!

I've started work on changing from hard-coded planet and star types to one that uses data files. I've been able to convert most of the mechanisms, and made it even more flexible and powerful as a result. Originally, there's only one star sprite, and one black hole sprite, and one starShader.fx file that applies to all stars. With the new data system, you can specify which shader file to use, which sprite to use inside stars.png or planets.png (allowing for a lot more different star sprites, like binary systems for example).

This is pretty powerful system that I've set up. You can specify whether or not a star system is inhabitable (if it's a black hole, uninhabitable for example), which planets and their probability of appearing, etc. If you set a planet's max pop to be 0, then it's uninhabitable.

This is what the XML files look like for stars.xml and planets.xml:


Note that there's only two star types, the yellow star (with shader values of "1,1,0,1" or yellow with 100% opacity), and the black hole. Also note that you specify where in the png file a sprite is (for stars, it's always 64x64, for planets it's always 40x40). This is what the galaxy looks like with those data:


I plan on adding more stars and stuff, but for now I'm focusing on fixing bugs and crashes with the new system, and displaying the descriptions you saw in the data file. I'm done for the night, but would like to hear your feedback on this!

Thursday, December 8, 2011

Design Screen functional

All of the elements that you see in the design screen are now functional. You can add ship designs to your list of designs now by clicking "confirm".

Not all display elements are done yet (equipment description, some stat information in equipment selection window, etc), but it's functional, so I'm done with it for now. Next up is the planets/star systems re-do. But that's for another day.

New Equipment Selection

Alright, I think I've reached the final equipment selection layout! It's a lot more simpler and friendly. Instead of an overwhelming list of items, there are two drop-down for the main/mount, as well as a list of modifiers. The stats are simplified to just those on right column. The window is a lot smaller as a result! Note the UI for the item count. Also note "Light Pew Pew Cannon"? It's a result of me implementing "description" that allows you to put the main item's name within the mount's description.

What do you guys think?

Equipment Selection update

Sorry about the silence for the past while, I was stuck trying to think of a better layout that isn't confusing (thinking that mounts and types are one list). But now I think I've found a solution (partly inspired by MoO 3's ship design)

Since you can only select one type and one mount, but as many modifiers as you want, I'm going to change the type/mount selection from a list to a drop-down. The selection window will be split vertically. On top left (under the type buttons and equipment name) will be the two drop downs (type and mount). Under that will be a list of modifiers.

On right will be the information for the selected equipment, listed vertically, and on bottom right will be the confirm/cancel buttons.

I think this approach will reduce the visual clutter (three lists makes for a lot of clutter), and reduce confusion.

I also started fleshing out the design screen, I hope to have both equipment selection and design screen done tonight! The next thing on agenda will be the star system/planet data files that I mentioned earlier.

Speaking of which, I realized another thing, what if you want a blue star to have up to 5 planets, while yellow have up to 10? That can't be done due to how the galaxy setup is done. So I will remove both black hole slider and min/max planets UI, and put those into the star system/planet data files.

I also plan on adding race's home system setup where you can specify what type of planet your race starts on, as well as if it follow the star system's random generation, or a pre-set system that you specified. An example would be Human, and their system would have 9 planets (including pluto), with the third world being the homeworld. So that will give the modders ability to specify starting systems in a more fine detail.

I plan on using that system for special systems, like the "Beyaan" system, that allows me to specify unique systems for lore purposes.

Saturday, December 3, 2011

More work on equipment selection

Thanks to a recent donation, I was able to commission some new artwork. The equipment selection window is almost done. The lists are done, I need to add the total space, cost, and power, as well as amount. I realized that having 1x mount, 5x mount, 10x mount would clutter the mount list, so I'm going to add an UI control where you determine the amount of items. However, this is grouped, so if you have a laser cannon x5, when you fire it, you fire the group, meaning all the power are consumed for all 5 at once, and it will fire five times visually.

Here's the mostly done screen (I had to stop, my daughter needs my attention):

Thursday, December 1, 2011

Planets and Star Systems

While working on the equipment selection screen, I realized something. In order to have custom technologies which includes colony base technologies, I will have to specify which planets a colony base can settle. Since those types of planets are hard-coded in the game, it'd be easy to make mistakes and cause the colony bases to be useless because spelling don't match.

This led me to think, what if I make the planet types non-hardcoded? I can separate the planets art into its own graphic file, then have a XML file "planets.xml" that contains name of the type of planet, description of that type, pollution threshold, type that it degrades to, and type that it terraforms to (if any), max population range, and where in the planets.png the planet art is located. It will always be 40x40 since the UI in game expects that size, but you can make different sized that is under 40x40. Also, more than one planet can use the same art.

This will allow users to create really unique planets for their mods, rather than just replacing the artwork.

While thinking about the planets, I realized another thing. Star Systems are hard-coded as well, it have a pre-set probability for types of planets to show up in its system (all different colors have the same probability). I can change star systems to use XML file instead of hard-coded. There would be different types of stars (colors, black hole, etc). Again, I would separate the star artwork from the artwork into its own file: stars.png. The XML file would determine which graphic to use, color of the star, probability range for different types of planets, and whether or not this kind of star allows planets (black holes don't have planets for example). This would allow users to create different stars, rather than just being limited to the normal one and black hole. For example, quastars or binary star systems.

So with the above system, you could designate yellow stars to have more organic planets (terran, jungle, ocean, etc), and designate red stars to have more mineral rich planets (you can specify the probability range of bonuses as well)

The amount of planets will still be adjustable in-game, just that their types would be determined by stars.xml file's probability range. However, if I were to convert to the xml file for stars, I will need to remove the black hole slider, since it will be determined by the xml file/galaxy script.

I will then also improve the galaxy script to actually specify which type of star to add when generating galaxy. Currently it just says "size 2 star here, size 3 star there", then the game randomly picks a percentage of stars and change them to black holes based on your percentage selection.

I think this should improve the game a lot, and allow me to more easily modify things without having to change the code inside the game. One of my goal is to make this game very easy to mod, and I realized that just changing the artwork may not be enough for some people, so I hope this will help satisfy the modding desire of those people :)

Wednesday, November 30, 2011

Equipment Selection Done

I've finished implementing all the required code for displaying and selecting items in the equipment selection. The "OK" button is disabled unless a valid combination is selected (you must select a main and a secondary item, modifiers are optional).

However, the stats and info isn't displayed yet, just the names. When the screen is fully done, with power, cost, and space usage shown, I will post a new screenshot.

Also, I realized that "Biology" field is a bit too restrictive, since there's not much biological options aside from agriculture and some minor pollution and misc technologies. So I've changed this field to "Construction", which covers different areas that requires engineering such as colony bases, mounts, transport pods, etc.

Tuesday, November 29, 2011

Preview of Equipment Selection

I think I may be coming down with something, this past week I've been suffering from lack of energy, and gets tired easily. Hopefully I'll get over it soon!

This is what I've managed to get done despite that:



The buttons on top uses icon to represent the equipment type (some of the icons are incorrect, or don't have artwork for). From left to right:
Beam, Projectile, Shockwave, Missile, Torpedo, Bomb, Shield, Armor, Computer, System Engine, Stellar Drive, Reactor, and Special. The last four buttons have incorrect icons, since I don't have the artwork yet. Those will be replaced as soon as possible.

There are three lists, top one is the type of item, the middle is mount type, and bottom is modifiers. The gap between the bottom and the confirm/cancel buttons will be used to show space/cost/power usage.

If you have suggestions or ideas for a better layout, please let me know! I'm off to bed!

Sunday, November 27, 2011

New Ship Design Screen

The previous ship design screen felt a bit too overwhelming and cluttered, so I brainstormed for a bit, and doodled on the new whiteboard a friend gave me. I think I've hit on a good layout. I made the changes, and I'm liking it a lot better.

On top left area, under "Name" and "Add Equipment", it is where you see a list of componenets, along with their power/space requirements, as well as cost and the remove button (X).

On bottom left is the description of the item, so if you want to know how much damage your laser cannon does, click on the laser cannon from top left area, and it will display the damage and how it's calculated (type * mount * modifiers), as well as any other important information.

Top right is the size/style selection. Middle right is the list of information about your ship (space usage, cost, power generation per turn, speed, etc)

I'm liking this layout a lot better than the old one. Still working on it. Clicking on "Add Equipment" will allow you to pick from one of the 13 types, and I hope to be able to present all the options in a clean approach.

Saturday, November 26, 2011

Ship Design and Borders

I've started work on the new ship design screen. I think it looks okay, but the 13 buttons on left may be a bit overwhelming for a player. What do you guys think?



Also, I got tired of losing where my system is when I zoom out and don't have it selected, so I added an toggleable option (toggled by pressing "B" key) that changes the stars' color to their owner's color, or grey if unowned, and disables nebula drawing. This is what it looks like:



Feedbacks are welcome!

Wednesday, November 23, 2011

New Video!

I've made an alpha footage video here!

Tech Screen Done, and Help Needed

I've finished implementing the user input for tech screen. You can modify the sliders or select a technology to view its description (there are no descriptions yet).

I also tweaked the technologies.xml to support the new features better. One funny thing happened, while I was testing the new xml file, I saw that there were some missing technologies from my list of researched technologies. So I went into my code and checked the loading function, then smacked my forehead. It's working correctly! I forgot that it now randomizes whether or not a technology is added to the list! So I added "isRequired="True"" to the basic technologies, and now they always show up :)

While trying to think of new technology items for my game, I realized that I may have bitten off more than I can chew. There are 35 different technology types. My goal is to have between 5 to 15 items for each type (depending on type, may be more). That means 175 technology items at minimum if 5 per type :) I'm not particularly creative when it comes to thinking of technology stuff, so this is where I need your help/creativity! If you have some technology ideas, please go over to here and post a new "issue" with name of the technology item, and explain what it does and what special features it have in the description.

Remember that each item can have a script associated with it to give it unique characteristics. For example, if I add "Tesla Cannon" which is a beam weapon, I could create a script so that it creates a zig-zagging beam which are not just visuals, but actual beam path so it could miss a ship that you've fired directly at becuase it zig zagged off the path! So feel free to come up with really creative weapons and items!

The technology types are as follows (I'll add notes where necessary to explain types):

Armor - Type of material
Armor Plating - Thickness of armor
Armor Modifications

Shield - Type of shield
Shield Generator - Modifies shield's total points and recharge rate
Shield Modifications

Beam
Beam Mount
Beam Modifications

Projectile
Projectile Mount
Projectile Modifications

Missile Warhead - The explosive part of a missile
Missile Body - The body of a missile, includes armor and engine
Missile Modifications

Torpedo - Self contained torpedo body
Torpedo Launcher - Modifies the size of torpedo
Torpedo Modifications

Bomb - Explosive
Bomb Body - Armor/size
Bomb Modifications

Shockwave - Weapon that fires an wave in either a circle or an arc
Shockwave Emitter
Shockwave Modifications

System Engine - Used in space combat
System Engine Exhaust - Size of engine, the bigger, the faster
System Engine Modifications

Stellar Engine - Used in galaxy travel
Stellar Engine Drive - Size of engine, the bigger, the faster
Stellar Engine Modifications

Computer - Type of computer
Computer Mainframe - Size of computer
Computer Modifications

Special (includes transport pods, colony pods, and any other special equipment)

Infrastructure (includes radar, stargates, construction platforms, etc)

I'm going to work on ship design screen next, then ship production screen, then finally the fleet management screen. At that point, I will release the next version to those who've pre-ordered the game.

Sunday, November 20, 2011

Technology & Research Screen Progress

As mentioned in previous post/comments, I've decided on a new technology system. Each technology will have an initial level, and a "fudge factor" that can affect which level the technology shows up.

For example, if a plasma cannon is level 40, and it have "fudge factor" of 15, then it could show up from level 25 to 55. Once the game starts from the game setup, all the technologies have their levels randomly assigned to different empires, and some may not even show up. So a humans empire may have plasma cannon at level 45, Zero People may have it at level 27, Space Hamsters don't have it in their list.

Unlocking new technologies for research requires you to research a technology that is in top 5 levels. When that's done, you unlock the next 5 levels, and if none is in that 5 levels, unlock the next 5 and so forth until there are some technologies to show.

Let's show how that works. If I mess up modding, and put a bunch of technologies at level range of 10-20, but none between 20 and 60, and the rest after 60, once I research something from level 15-20, it would check 20-25, and see that there's nothing, continue to 25-30, and so forth. When it reaches 60-65, it finds some technologies, and stops the search. Of course, this range would be very long to research, but it prevents locking out if you forgot to add technologies for every 5 level.

This is all now implemented. I had to overhaul some portions of my current system, but not as bad as I feared. I also plan on adding an option at game setup where if you pick one technology from list of available, you can only research that, and lose the other technologies (similar to MoO 2). Once you've researched it, it unlocks the next 5 levels, and repeat the selection process. Some people don't like that, including me, but I'm adding it as an option for those who do like that.

I also started re-doing the research screen. This screen will be for managing research output only. Once you select a technology, you can't change it until you've finished researching, so choose carefully! When a technology is researched, it will prompt you at start of your turn to pick next item to research (similar to MoO 1)

I've finished the research screen layout. Here's the screenshot:


The left 6 boxes are actually buttons, you can click on one area, and it will show a list of technologies that you've researched in that field in top right box. The sliders manage the percentage of total RP for each field. Lock button is self-explanatory. The bar next to the lock button is the progress (a percent will turn green). The empty box under list of researched items will be the technology description box. The box on bottom right is the RP output information. The left one is your planets' output. The middle is research from trade treaties with other empires. The right one is the sum of the other two.

Each box on left also will display how much RP required, and how much you've researched so far, and estimated turns before it's complete. Since I have nothing selected, it's hidden.

The interface for those aren't implemented yet (clicking, dragging, etc). I hope to have this and the prompt done this week! We'll see due to thanksgiving holiday.

Whew, this was a long post! But a lot of progress made!

Thursday, November 17, 2011

Planets Screens Done, and Thoughts on Technology

I've finished implementing the "Apply" button, and fixed some incorrect icon placements in the planets screen. Everything is working beautifully!

The next thing for me to do is finish the technology system. I've redone it in the past, but I'm not really happy with the result, so I think I may re-do it again.

I'm thinking of a system where the technologies you can research are randomized (with creative trait resulting in less missing technologies). Also, the technology's pre-requisites would be randomized as well, unless they have explicit requirements in the data file, to avoid "teching" strategies like in Civilization and to spice things up every game.

For example, say Plasma Cannon is level 40. It have a random pre-requisite of a level 34 Auto Repair. You will need to research Auto Repair first before you can research Plasma Cannon. In a new game, it now have a pre-requisite of Level 37 Fusion Engine. However, if Stargate technology have a pre-requisite of "Singularity Torpedo" in the xml file, it will always have that pre-requisite. So it supports a system where all technologies have certain pre-requisites (similar to Civilization), or randomized (kinda, but not quite so, like MoO 1), or a mix of both, depending on the technology file. A technology may be a pre-requisite for more than one advanced technology, and a technology may have more than one pre-requisite.

I also am thinking of removing the "6 fields", and have a list of possible technologies to research, and you can research up to 8 different technologies at a time. To add an item to research, just click on the item that you want to research, then "Research". Once it's added to the list of items currently being researched, it can't be removed. When it's done researching, it will be removed, opening up a slot for the next project.

It looks like I'm going to do research screen first before the other screens :) Feedback/comments on this system? I'm sleep-deprived, so if the idea sounds crazy, it might be :)

Tuesday, November 15, 2011

Planets Screen 95% done!

The planets screen is now ALMOST done! Just need to have the "Apply" button actually do something :) But that won't take too long, however I'm too tired to continue tonight.

The first screenshot shows a list of all of your owned planets. In this case, there's only one. You can filter out different planets, then modify the sliders, and hit the apply button to actually apply the changes. Notice that two are at 100%, and the third is at 50%, resulting in the first two 40% and the third one 20%? I've explained how it works in a previous post, but wanted to show it in action.

The second screenshot shows a spiral galaxy, and the planets filtering in action. The bonus icons are shown next to the population info in the planets list. Note that the output sliders and the Apply button are disabled, since you don't own all the planets in the list.





When I finish the "Apply" button, I'm going to work on improving the technology system. The reason for this is that I realized that if I do fleet management window, ship design, or production screen, the ships need to display their information in all of those. So I need to finish the technology system first before I can work on those three screens.

One thing that I'm planning on is the ability to set starting ships for each race. This will be a XML file stored along with other race data in the race folder. You can specify the hull size, components, etc, of the race's starting ships. This will be included in the next version release, as well as the three screens I mentioned above. The reason for this is obvious. We don't want space-based races to start with two scouts and a colony ship :)

Monday, November 14, 2011

Deployment Woes

From the general comments, it looks like most people like the idea of stargates and their varying sizes for moving around, but not for deployment purposes.

I originally said I didn't like reserves/deployment, but thought it'd be a good compromise to support empire-wide production and trading ships. So here's a chance to try and work out a system that don't require reserves/deployment.

Since the game now handles ships on a per-ship basis, trading ships can be just a matter of selecting ships from your fleets and simply handing it over. When you give an empire your ships, they just change owner, but stay in the same location. So they will have to move it to their empire, but they could use your stargates if you have travel agreement. This part won't be a problem, and will allow me to remove reserves/deployment.

Now for the hard part: Construction of ships using empire-wide production. I'm sticking to empire-wide production, so per-planet production is not an option. One reason is the space-based races that don't even have planets to produce ships from. So we will need a system where we can decide which system to produce ships at.

I could add an option for which system a ship should be built at in the production screen. However, there are several problems that I need to solve:

What happens if the ship is halfway built, and you lose control of that system to an enemy? Is the progress lost? This would make sense because if a factory is destroyed by a bomber, the progress there are lost.

Should systems that have planets owned by you, but are being orbited by enemy fleets not output any production, research, or commerce because they're blockaded? This again, makes sense, and can really cripple you if the planets there are rich in resources. If it's your last system, then you're doomed.

Should the list of systems available for a ship to be built at be determined by the fact that you have a fleet or own a planet in those systems? Fleets are mandatory because of space-based races.


If you guys agree to the above approaches to the problems, then I will remove the "reserves/deployment" totally, and have stargates be just a tool for moving around the galaxy.

Space combat functionality

I'm trying to finalize how space combat works, and how ships should work in terms of design and functionality. I would like to hear your feedback on those ideas.

The goal is to have a turn-based combat, and yet have a fair combat. With that in mind, I'm thinking of changing how ships are designed.

First of all, I'm thinking of changing the system so it's components based. This means you can add more than one engine, for increased speed (there are two types of engines, interstellar and sublight engines), or layer on armor for a heavily armored ship designed for ramming other ships (yes, you can kamikaze your ships!)

I don't really like the idea of issuing commands, then having everyone move at the same time, for many reasons. I want the classic MoO 1/2 space combat feel where one ship move at a time. Now that the game is designed for fewer ships, I think I should go with that approach, instead of everybody moving at once. However, how to make it balanced, so the first player don't have too much of an advantage?

While thinking about that problem, I think I've hit on a solution. For those who've played X-Com, you may find this familiar. Each ship would be powered by reactors that provide power output. The more reactors you have, the more power you have available per turn. Each ship will have 100% power per turn, and each action will consume a certain amount of power, based on the power required, and the available power. Also, your ship will have time constraints. All ships will have the same amount of TU (Time Unit) unless you have technology that gives you more time.

For example, let's say a scout ship have a power reactor that provides 200 PU (power units), and an engine that will consume 20 PU per movement. It also have a laser cannon that consumes 50 PU. In combat, the player will see that moving a ship will cost 10% power per tile moved, and firing the laser cannon will cost 25% PU. So you can either move the ship 10 tiles (or less, depending on if it was diagonal or not), fire the laser cannon four times, or a combination of both.

Now if that same scout upgrades its reactor so it provides 400 PU. The scout now can fire the laser cannon 8 times, or move up to 20 tiles, based on its power output.

However, there will also be a time constraint. Firing a laser cannon (since it need to recharge and cool down) will take up maybe 30 TU? Then it can only fire three times per turn, regardless of the 200 or 400 PU reactors.

The engine moves at the same speed, let's say 20 TU, for either reactor. However, if the scout have a second engine component, the movement time cost will be halved to 10 TU, but has the twice PU requirement. So with 200 PU reactor, and two engines, it would cost 20 PU for each engine, but halve the TU to 10. However, the ship would still move up to 5 tiles, because the power will be exhausted, instead of time running out. If you replace the reactor with an upgraded one, providing 400 PU, then you can move up to 10 tiles in the same turn. Or you could move 5 tiles, leaving 200 PU and 50 TU for the laser to fire once.

The above numbers are an example only, and subject to balance. I really like this idea, because instead of cramming 30+ plasma cannons on a ship, and having all of them fire at once against the hapless victim, you have to balance the time/power usage. So if you have an ultra-powerful planet-destroying weapon that consumes say, 50,000 PU, and your ship only provides 10,000 PU per turn, you'll have to charge it up to 50,000 first, so every 5th turn you can fire it. Or you could move a bit, then charge it with the remaining power. You can pack a bunch of different weapons (no need for multiple weapons of the same type, unless you're guarding against component damage in combat) that have varying time/power consumption. So if you see a bunch of missiles, you can use your point-defense laser cannon with its low power/time usage to take them out. Or you can focus on using the big weapons against big ships.

Certain weapons will have ammo limits (particles and missiles), those weapons usually have very low power usage because they use ammo instead of power for the weapons. Shields can be recharged using PU, or left alone. Repairing using auto-repair will consume power as well. So you'll have to plan on how to allocate your PU and TU, or your ships are doomed.

There's also one other thing that you will need to consider. Each weapon have an accuracy stat and range limitations, so you'll have to consider those as well when firing. For example, a laser dissipates after 5 tiles, and have accuracy of 80%. You could fire it at any tile (similar to X-Com), but it won't be guaranteed that it will hit that tile. You may end up hitting your own or an ally's ship!

So with the above rules, the start of battle will mostly consist of ships getting into firing range, so the first player don't have too much of an advantage. I think this solution will be the best for my game. I welcome your feedback on this.

Saturday, November 12, 2011

New planet screen

Things are progressing quicker than I thought. I have the display working for the planets list, but not the user interface yet. First, screenshot, then I'll explain how things will work:


Top left is the galaxy minimap. Top right is the list of planets that you have selected. If you select one of the planets, it will have the selection drawn on the star on the minimap.

The plan is to have a list of different planet filters below the galaxy minimap, and sliders that control the 5 different outputs below the planets list. Then there will be a overall output report below the sliders to show you the summary of your empire.

The list of filters would include:
Owned planets
Unoccupied planets (this would disable the sliders if selected)
Foreign-occupied planets (this would disable the sliders if selected)
Rich planets
Normal (no bonuses for construction)
Poor planets
Exciting planets (bonuses to research and commerce)
Mediocre planets (no bonuses for research/commerce)
Dull planets (negatives to research and commerce)
Fertile planets (bonuses to environment/pop growth)
Regular planets (no bonuses for environment/pop growth)
Infertile planets (negatives to environment/pop growth)

You can mix and match filters to select, for example, planets that are rich, but has negatives in other fields, and focus them on production. Or planets that have more than one bonus, you can select those specific planets and balance the outputs so it uses both (or all three) bonuses.

The sliders will be a bit different from per-planet sliders. Since different planets have different levels of output required for environment and agriculture, the sliders will be "relative" sliders. If you set one slider to 100%, and another to 50%, and the rest at 0%, it means the planet's first slider will be set at 66%, and the second slider will be set at 33%.

You can lock sliders, which will mean that those sliders are locked on all selected planets. It will be common to have the agriculture and environment locked since they automatically are set to clean/sufficient food per turn. So you can set 100% in one field without worrying about causing pollution and such. But if you really need to research something, or build something, or get out of debt, you can unlock the two sliders and slide the desired field all the way.

Let's say for example, a planet has 25% into environment, 25% into food, and both is locked. If you set all three remaining sliders to 100%, it means that the remaining sliders will have the remaining output percentage split evenly between them (50% / 3 = 16.6666% per field). If two are 100% and one is 50%, then the first two will have (20% and the remaining field will have 10%)

This will be a very powerful tool in managing your empire. I think it's possible that you will manage planets more from this screen than from per-planet in galaxy screen.

Getting excited yet about the macromanagement aspects of this game? :)

Fleet window UI done

The artist provided me with the artwork for stargates and UI buttons. I've implemented most of the functionality for those items, but rest will have to wait until I finish the technology system (transport pods and such).

Here's a screenshot:


I'm now working on the planet management screen. Maybe I'll have it done in a few days? We'll see. Then after that, the fleet management screen, then the production screen, and maybe ship design. Then the next version will be ready for the pre-orderers.

Thursday, November 10, 2011

Galaxy Screen done for now

I've fixed bugs in the new UI windows (Planet, System, and Fleet), fleshed out the missing features (except for the special buttons, still awaiting artwork for that), and made it so that you can't select other players' ships (you can hover over them for info, but can't select them as if you're about to issue movement commands).

I also added a check for each turn that ensures that your food production and pollution cleanup are at their optimal output (all pollution cleaned up if possible, then enough to feed your people). However, if you've locked the food or pollution sliders, they won't be touched. Other sliders, if locked, won't budge as well.

I'm feeling good about having the galaxy screen done. There's still some missing features, but they require other stuff to be implemented before I can add them.

Next up is the planet list screen where you can manage your planets. Still thinking about how to display the stargate info...

Deployments and Reserves

Ever since I made the decision to put ships into reserves when they are built, I've been gnawing on one problem: Balanced deploying of ships.

I don't want players to be able to deploy ships anywhere they want, because they could deploy in middle of an enemy terrority, making defense impossible.

On the other hand, I don't want players to be restricted to one central production center where all ships originate.

Then there's the problem of sending ships back into reserve. I don't want the MoO 3's approach where you can disband a taskforce anywhere, and it's back in your reserves after 5 turns. I've used this to recall ships from opposite edge of galaxy because that was faster than having them travel back.

So what to do? I do like the idea of building mobilization centers, but the problem with mobilization centers are that they're one price, and with my empire-wide production, it'd be easy to just conquer one system, then have your massive empire build a mobilization center at that system in one turn.

I needed something like mobilization centers, but something that can scale with the game's scope, and I happened to see a screenshot of MoO 1 with a stargate on one planet, and realized that there is indeed a solution to this dilemma!

How I envision Stargates working:
You don't have to own planets at a system, just merely have a fleet there, requiring you to actually hold the system. This will allow space-based races to create stargates without planets
Stargates will come in different sizes. The bigger they are, the exponentially more expensive they are to build. However, the upkeep cost will be very low compared to the construction cost, depending on the size, so you don't bankrupt yourself by building a bunch of small stargates.
Different sized ships will require stargates of at least their size to be able to be deployed.
Stargates not only act as a mobilization center, they also perform similar to stargates from MoO 1. There won't be lines connecting different systems because a stargate can connect to any other stargate. The pathfinding code will automatically find the quickest path, with or without stargates.
To travel to another system with a friendly stargate (either yours or an ally's), both stargates must be of the same size or bigger than the biggest ship in your fleet.
To put ships back into reserves, they must be adjacent to a system with a stargate big enough for those ships before you can disband them. This will prevent the "5 turn from anywhere" exploit in MoO 3.
Terraforming and planet building projects can only occur in systems with a stargate. This allows players to build planets in systems with only asteroids or gas giants. It also allows space-based races to terraform planets that they've devoured (replenishing their food source)

This will allow players to build one or two very expensive "Leviathian" sized stargates to be able to mobilize ships of that size, but they can't really travel through stargates due to the cost of the huge stargates. However, a bunch of small ships can more easily travel around. Of course, it's very possible in a huge galaxy to have a lot of Leviathian-sized Stargates due to the number of planets that can support such cost and construction efforts. I think this will do very nicely in balancing reserves/deployment. You can't build a leviathian sized stargate on a system you just conquered in middle of the enemy terrority unless they're stupid enough to leave you alone there for a while. But the smaller ones will be cheaper so it's possible for you to establish a beachhead there.

What I'm unsure about is how Stargates should look in the galaxy map. Should they be a 32x32 icon next to the system similar to fleet icons? This may be confusing because the stargate will be accessible from any position that is adjacent to the system. Also, how to show which size a stargate is? Ideas, suggestions, and feedback are welcome on the whole concept of stargates!

Wednesday, November 9, 2011

Pollution!

Pollution is now implemented. How it works is that a planet stores barrels of toxic waste from current output for the next turn. The environment slider cleans up the last turn's pollution. So on the first turn, you don't have pollution to clean up, but after that you will have to start cleaning up.

The more output you generates, the more pollution you generate as well. So for example, if you research a technology that doubles your construction output, it will also double your construction pollution. This will not be the same as MoO 1's pollution where eventually pollution goes away. Pollution will be a constant thorn in your side the entire game.

What if you decide to ignore pollution and hope it just goes away? Well, if you're on a terran planet, and you reach 1,000 barrels, it degrades into one of the two planet types, depending on if it's a wet climate or not, Jungle or Steppe. If you still ignore the pollution, and it reaches 2,000, it changes to Ocean or Desert. And so forth, with the threshold doubling each level. Finally if you're STILL polluting on a radiated planet, it will be destroyed and become asteroids, at which point your people are wiped out on that planet, unless you're a space race that don't care.

This is the tweaked planet UI. This was originally Terran, but I've polluted it to 4k, causing it to become Desert.



You can clean up pollution, but you cannot change the planet back without terraforming. So you gotta watch your pollution! However, on less desirable planets, the threshold is very high (for radiated, it's 128,000 barrels).

There will be random events that add a large amount of pollution and damage your precious planets. *Evil laughter*

Tuesday, November 8, 2011

Finished fleet window for now

I ran into an unique situation with the fleet window. For the scrollbar, I usually pass in "itemsVisible", or how many items are visible. What I forgot was that if I show two rows of items, I needed to handle it a bit differently than normal. So that's resolved. I also improved the button handling and fixed some bugs. I added the missing UI handling (scrollbars and stuff) so now all the UI elements except the special buttons are working correctly, and drawing correctly!

I'm waiting for the artist to provide me with artwork for the other two special buttons, then I will finish up this screen. The ship info popup won't be available until I finish the technology stuff.

Anyway, here's the final fleet window (sans the "Orbit Planet" and "Clear Movement" buttons)



Next up is finishing up the planets management from galaxy screen. Planets need to degrade with pollution, as well as adding empire-wide production code handling, then the galaxy screen is done. I will then work on the planets screen where you can manage more than one planet at once.

Saturday, November 5, 2011

More work on Fleet UI



The "Transfer" button on bottom left will be enabled if you have transport pods in your ships, and you're adjacent to a system with owned planets. For now, it's just there until I implement the transport pods.

All ships will be selected by default, similar to MoO 2. Deselecting them will remove them from the current fleet when you issue movement command, again, like MoO 2.

There's still work to be done, such as a window that pops up below the fleet window that display the ship's information when you hover over a ship, but I think this is a good start!

Friday, November 4, 2011

Progress on Fleet/UI

I changed how the game handles fleets. Instead of having Ship + amount, it now stores each ship individually. To have the game work, I had to rip out the screen for managing fleets, and start on a new UI window for it in galaxy screen. After debating how to do it, I settled on something similar to how MoO 2 did it. This is what I have so far, subject to a LOT of tweaking:



Also notice the varying shades of the background stars? And the transparent window for the fleet UI? And the new selection art? Galaxy Screen is nearing its final layout, then I can focus on other screens!

Transports

One person commented asking if the ships will have transport pods. My original answer was no. But on further thought, I realized that it'd be hard to balance if you can instantly create transports and send them off anywhere. If you see an incoming fleet, you can pack up and leave in an instant. Or you can easily colonize every planet in your region by sending 1 pop to each planet.

So I'm thinking of scrapping the "transport ship" idea, and adding transport pods to ships, so it'd require you to have ships to carry people. Each pod takes up a lot of space, and have a limit on how many people it can hold. New technologies will give you new transport pods that can store more people, or reduce the space usage, or other improvements.

Then the artwork originally planned for the transport ship will be your race's "Ultimate" ship (they're 256x256 pixels).

While this may add a bit more management, it'd help balance the game. The starting fleet will consist of two scouts and one transport ship (a large ship that has all the space used for a transport pod). Or if you're a space race, two scouts and two "motherships" that generates output.

Any feedback on this idea? I haven't started on this yet, so would like to hear your opinions before I commit to it.

Monday, October 31, 2011

Space-based races thoughts

I was reading some rants from a person who said that the races in 4X space games are too similar. They're all ground based, and there's no major differences aside from race attributes such as creative or repulsive. He suggested some different races, and one that struck me was space-based races. Each person is basically a sentient starship (think of crystal or space eel from MoO 1/2).

This got me to thinking, is this even possible to be implemented in my game? I thought about it a bit, and realized that due to my emphasis on macro-management, it is indeed possible! However, this is just speculation, and I don't know if I will actually add it. But if enough people request it, then I will look into it.

I would need to add the ability to generate commerce, research, and construction from ships through add-ons. The ships are maintained through commerce (commerce are a food source for those races, such as gems and rare metals), and they can "genetically modify" new ships (ship design). This would require racial technologies, which are already implemented in my game.

However, what's to prevent them from hiding in a corner and just keep on building ships that generates outputs? So one requirement could be to have them be adjacent to a star system with unoccupied planets. Their output can depend on the best bonus in that system (if there's a planet with bonus to construction, the ships would use that planet). This whole process would be abstracted away. If no income is being generated, the ships will starve and you'll be forced to cannibalize some of them to feed others.

Spying and ground invasions won't work against those races for obvious reasons (technologies are race specific, and are locked in their memories, and they don't have planets to own)

Gifting planets/ships to them will work, and will grant them access to ground invasions and the ability to capture technologies through that method. However, the technologies may or may not be useless compared to their racial technologies. But it can provide a stable source of income for the space races. But they can't produce the ships other than their own designs, so they won't suddenly build normal starships from nowhere.

What do you guys think about space-based lifeforms in this game? It's very possible to implement it, but I would need to tweak the ship code to support special modules and have the ships be able to generate output.

Saturday, October 29, 2011

More work on galaxy screen

I said that I'm working on finalizing the galaxy screen. Well, here's one more thing that I just finished!



And they twinkle as well! It was tricky getting them to scroll properly. Most games just cheat in this area, if a star falls off screen, warp it around. But in this game, if you click on a location, and the stars just randomly move around, it'll disorient you. So every background star has an actual coordinate that is converted based on it's "layer" when it's drawn. The result is a consistent starfield that don't change no matter where you're looking in the galaxy.

There's still some tweaks to be done (maybe reduce the amount of background stars?), but it's making the game feel more lively!

Friday, October 28, 2011

Finalized designs

I've spent a lot of time lately thinking about how everything should work in the game, and some design issues that I've been facing for a while. I finally finalized how things will work. I'm writing this down for two reasons; People can see what the game's end gameplay will be like, and for future reference in case I forget something.

First, let's start with waste management. This has been bothering me a lot. The problem is that when you get improved construction bonuses from technology or whatever, the waste output increases on a linear basis on how much you've allocated to construction. It's kinda like a chicken/egg situation. If you increase construction output, it should increase waste management as well. But if waste management increase forces construction decrease, the cycle starts again. While thinking about this, I hit on a simple yet elegant solution: Make the waste management handle last turn's waste output. That way, you can increase construction output a lot in one turn if you need to hurry up the production of a ship, then clean up afterwards.

Waste will be stored until they're finally disposed of. There will be a limit on how much waste can be stored before it start making people sick and die, and the more waste there are, the quicker people will die off. If everybody dies off, and there's still waste left on the planet, then the next people who settles the planet will have to clean it up. This way, I can add events for accidents that overloads the waste capacity of a planet, and technologies that increases the holding capacity.

Planets won't be terraformed through waste management output as originally mentioned. They will be terraformed through the global production screen along with other ships. Terraforming will be very expensive, and will be accomplished one stage at a time (Barren -> Arctic for example) Constructing planets from gas giants and asteroids will be accomplished in the production screen as well.

The fleet icons in galaxy screen will be reworked a bit, because right now they're confusing with three different fleet icons (system, starship, and transport) overlaying each other. It will show only one of the three icons. If all three exists, only transport icon will be shown. If starship and system ship exists, only starship icon exists. Otherwise system ship icon will be shown.

Planets screen will provide a way for you to manage more than one planets at once. Here you can specify different outputs for different types of planets, similar to MoO 3's development plans. This should reduce micromanagement a lot in large galaxies.

The last finalized design is the space combat. I've been trying to think of a fair way of doing turn-based space combat. The problem is that the first player to move has an advantage because he can kill some ships before they can even shoot back. So I discussed this with some people over in www.spacesector.com, and I've reached an decision. The space combat will be quasi-turn based combat. If you've played Frozen Synapse, you might understand the concept.

At each turn, you issue movement and firing commands. Once you've finished issuing commands, you hit "Done" and you will watch the ships move and fire at each other. Ships will fire at their designated targets as soon as they enter firing range. This will look similar to Imperium Galactica 1's space combat. Once all commands are done, the turn ends, and you're back to the command issuing stage for the next turn.

One problem with attacking star systems is the number of planets for each system. It'd be very tedious to attack one planet per turn, and this gives the defender an advantage due to the ability to call reinforcements to defend other planets. So planets and stars won't be featured in space combat. If you're invading a star system, you can't bomb or invade planets until after space combat phase. However, your troop transports will be a part of combat, and they'll be top priority for the defenders to destroy.

When the combat phase is done, you will be presented with a screen showing planets, and your firepower amount. If you have two ships equipped with a planet destroying weapon each, you can destroy two planets that turn. The amount of population that you can kill is determined by the amount of bombs you have total. For example, if you have 10 ships equipped with 2 nuclear bombs that kills 5 population per bomb, you can kill up to 100 population that turn. So if there's three planets, each with 75 population, you bomb one planet, killing all 75 population. Then you bomb the second planet down to 50.

You will be able to control how many bombs to drop, as well as how much of each transport to land per planet. You can try invading first, and if that fails, bomb the planet. Or the other way. There will be technologies that reduces the damage that bombs do.

The ultimate bomb will be the "Black Hole Generator". It targets stars, and if you decide to use it, it will annihilate the entire system, leaving a black hole. There won't be a way to turn black holes into star systems, so this is "end-all" weapon. However, everybody will hate you for using it.

One other thing that you will be able to do, if you have a fleet next to an system that isn't owned, is to destroy planets/star. The window will come up if you have the ability to do so. This can be used as an offensive or defensive measures. Offensive by preventing them from colonizing more planets since planets are destroyed. Defensive by preventing them from establishing footholds in your area if you see transports incoming escorted by armadas.

Whew, that was a lot of stuff to cover. Tonight I'm going to work more on the galaxy screen, finalizing the UI stuff!

Wednesday, October 26, 2011

Third iteration of System Window

I'm in progress of finalizing the Galaxy Screen. Last post showed a part of that goal implemented. I've decided to overhaul the system/planet UI so it's more nice and take up less of your screen. When you have a system selected, it don't have a planet selected automatically, which means more visible area. When you have a planet selected, it shows the planet's UI window below the system UI. This is what it looks like:



You may notice one big missing item. What happened to the ship selection for building ships? I realized that I can go back to my original design, so I've removed the ship selection for planets. I originally envisioned a screen where you allocate ALL of your planets' construction output to different projects such as star ships. I even had it implemented a long time ago: New Version Released

Then when I added fuel ranges (removed a while ago), I realized that it don't make sense if two systems aren't connected to each other, but still be able to supply parts to build ships. And I had a klunky solution for where ships are built. So I removed the "Empire-wide ship production" and made it per-planet. Then I later removed fuel ranges because I felt it didn't mesh well with my game design. And recently I added fleet reserves (all newly built ships go here), so no ships are actually put into galaxy unless you mobilize them. Then I realized that the whole design changes has gone a full circle, and now I can just put all the planets' construction output into one screen, and the constructed ships will go into reserves.

Funny how things turned out eh? Anyway, this UI isn't final, I need to add two buttons (Transfer Population and Mobilize Fleet), as well as redoing the "Transfer Population" window. The artwork for those are coming soon.

Saturday, October 22, 2011

Still working!

To show that I'm still working on Beyond Beyaan, here's a screenshot of the new movement indicator that I just finished:



The boxes that were used to show the fleet movement were really ugly and bothered me. So I decided to finally replace that part with the same mechanism that I will use for beams in space combat. And it's looking a lot better! I may adjust the colors later. The dark green is the current fleet's path, while the light green is the path that you're selecting for that fleet. The screenshot don't show that the path indicator is streaming towards the destination however. It's looking a lot better than the old box like this:

Thursday, October 20, 2011

More progress on Phase 2

I've implemented collision detection and texturing, along with input handling. There's a bug with textures (it only uses one for everything).

Next on list: Implement billboards (2D images that always face the camera), monsters, shooting/particles, and death.

I'm getting there...

Tuesday, October 18, 2011

Progress on Phase Two

In my previous post, I've managed to set up a 2D rendering using OpenGL, and started on a rewrite of MoO 1's program using MoO 1's existing assets. With the 2D all set up, that project is now on hold while I complete the phase two of my goal of learning OpenGL.

I do have some good news, I've managed to set up a 3D rendering, and simple blocks/ceiling/floor similar to Wolfstein 3D. This is what it looks like currently:


There's no texturing yet. I plan to implement a simple maze generation algorithm, so each level will be randomly generated. Then I will add some simple 2D billboard monsters that you need to fight, as well as shooting projectiles and killing them. I did say that it will be very very simple FPS game :) When that's done, I will return to Beyond Beyaan. I'm glad that the delay isn't as long as I'd feared it'd be.

Monday, October 10, 2011

Phase One completed

I've started the reMoO project using OpenTK (a OpenGL wrapper for C#), and it handles input and file loading. Right now, it shows the intro video, and if you click, or wait til it's done, puts you into the beginning of the main menu (just a ship with whirling background). No sounds though, because I'm deaf :)

This is sufficient for me to start on the next step, creating a simple 3D shooter. Once that's done, I will be back working on Beyond Beyaan and reMoO.

This is a screenshot showing the comparison between my reMoO (bottom left) and DOSBox (top right):

Saturday, October 8, 2011

Good news and bad news

First, let's start with the good news! I've implemented finances, and turn counter, into the game. On bottom left you will see your reserves amount, plus your income (or deficit). Bottom right you'll see the turn counter. If your income is low enough for you to go into negative reserves, you won't be able to end your turn until you've balanced your budgets. Here's a screenshot:



Now for the bad news. At work, they've asked me to set some personal goals for myself. I decided on learning OpenGL. This was a few months ago, and I haven't started on that goal yet due to this game. But while browsing the Realms Beyond forums, I saw that some people are working on a re-write of Master of Magic. That re-write, named reMoM, uses OpenGL in my favorite language, C#. So it got me thinking, what if I do a re-write of Master of Orion, it'll help me accomplish my goal, and still work on something that I'd enjoy.

So this is my plans:
Put Beyond Beyaan on hold until I've accomplished my goal.
Develop a framework for reMoO that loads in LBX files, initializes OpenGL, and handles input.
Put reMoO on hold, develop a very very simple 3D shooter similar to Wolfstein3D, just enough to learn the 3D aspects.

At this point, my goal is now accomplished, so I will then go back to developing both Beyond Beyaan and reMoO. This will let me work on one project if I'm frustrated with one problem in another. I hope to finish my goal within a month.

Saturday, October 1, 2011

Modding Now Officially Supported!

I've finished the last details and separation of global vs local images for being able to load in your custom game data, and added the drop-down in main menu. So modding is now officially fully supported!

How it works is that you select a data folder to load when starting the game, then pick one of the three options: New Game, Continue, or Load Game. All three will use the picked data folder. Save games will be created in the mod directory, separate from other data folders. This will avoid you trying to remember which save games is for which mod, and avoid data corruption. For example, if you load a game that contains a race that the current data directory don't have, it'd cause problems.

Here's the screenshot!

Galaxy Setup Screen

Another screen that I've mostly finished, the galaxy/game setup screen. Top part is for the galaxy stuff, and bottom part is for game setup.

I know, it's not anything new, just a re-worked screen. But it makes the game feel more polished and done. Here's the screenshot:



Next up is re-doing the in-game galaxy screen. I plan on replacing the movement indicator with lines instead of "boxes", re-do the planet and fleet sub screens, and add turn indicator and empire finances summary. Also implement the reserves idea.

Monday, September 26, 2011

Colors and Teams

I know it've been a while since last update related to programming stuff. Things has been busy the past couple of weeks, and will be busy for the next few weeks as well. But the good news is that I'm nearly done with player setup screen! The only remaining thing to do is to fix the color selection screen (it's not drawing things properly), and add an UI component for setting the AI difficulty level.

Here's the latest version of player setup screen! As usual, feedbacks are welcome.

Wednesday, September 21, 2011

Some design changes

I'm still working on the players setup screen. While working on this screen, I thought about several things, and those led to some other things, and so forth. First thing that I was thinking about is "What if different empires can be the same color, meaning they're allied for the whole game?" Then I realized that it'd be confusing to the player if different empires share the same color (which systems are yours, and which are theirs?), but the idea of "permanent allies" struck a chord inside me. So I decided that it will be a feature of the game. In "Game Setup" screen, you will see a checkbox for "Permanent Alliances" which means you can't ally or unally during the game, you stay allied with your teammates for the whole game, and win when all non-allies are eliminated. In Player Setup, you pick the team number (ranging from 1 to # of players) for each empire. Regardless if permanent is on or not, if you're on the same team with other empires at the start of the game, you're automatically allied with them. If permanent isn't on, you can break up the alliance later.

This got me to thinking about the diplomacy, and I realized what I have so far is pretty much pathetic. It's just a very basic system, and I felt that there's much to be desired. So I thought about how the "Permanent Alliances" will impact the game, and felt that there should be more options. So instead of a bunch of generic actions that you can do, you click on an empire, and it brings up a window with two lists. They will consist of things that you can offer, and things that the other empire can offer. This will include planets, money, treaties, technologies, declaration of war, and... Ships!

Yes, you will be able to trade your ships for something other. I don't think this particular feature is offered in any other 4X games. But often when I play with my brother, sometimes he'll get in a sticky situation, and I want to help him out, but that means at least one of my friends (computer players) will get mad at me for helping him out. So I have to either sit back, or help and make my AI friends mad. So being able to trade (or gift/demand) ships will handle this situation. USA sells its F-Series fighters to other countries, why can't we do that in a 4x game? If the ships contains technologies that you haven't researched yet, you have a decision: scrap the ships in hopes of recovering those technologies (not 100% success rate), or keep them and use them to do battles for you.

However, when you're in diplomacy screen, you can't see what the other empire have to offer in terms of ships unless you're allied with them. This is to prevent players from gauging the other empire's strength.

Now, while thinking about this cool idea, I realized one problem. How do the game know which ships you want to give, and to keep? So I pondered on this for a bit, and I think I've come up with a good compromise. You will have ships on "Reserve", and "Active" ships. All built ships are automatically put into reserve list (with the added bonus of low maintenance compared to active ships). To activate ships, you go to a system that have at least one of planets owned by you, and click on "Deploy Ships". It will bring up a list of ships in reserve that you can deploy. It will then deploy ships to that system. This will be kinda similar to how MoO 3 works, but there's no task forces, and you can't disband the fleets anywhere. You deploy as many ships as you want. To put ships back into reserve, you will need to put them adjacent to a system that you own, then click on "Put into Reserve"

When an empire trades you ships, those ships are put into your reserve list.

With this system, the ships that I trade with other empires will be direct from the reserve list, so it don't mess up my plans with active ships. I don't like the idea of Active/Reserve status, but I think it's the best solution, because I really want to be able to gift/trade ships with other empires.

This may seem like a huge change, but it's a minor change in core code. Most of the changes will be with the UI screens. When those are implemented, this will be the final diplomacy structure. My plan is to re-do a screen, replacing the artwork with the new ones from the artist, and fully flesh out that screen (all the missing features, etc), then move to next screen. That's why all of this is happening, because I want the "Player Setup" screen to be feature complete and final :)

Friday, September 16, 2011

Player Setup almost done

I started work on Player Setup today (Race Selection was a different screen), and I hoped to have it done by tonight, but I need to go to bed. It's past midnight here. The good news is that this will be the final setup screen for players for the game, including artwork. Notice no more blue background? :) Once this screen is done, I won't be coming back to it except to fix bugs. All the UI elements in the screenshot are fully working.

Personally, I think it's a lot better and a lot more clearer and organized than the old screen!



Good night all!

Tuesday, September 13, 2011

New Race Selection and UI Element

Whew, pulled off a marathon of programming. This new Race Selection will pop up when you click on "Race" button in new game setup:



Note the description? That's a new UI element that I just added that allows word wrapping and scrolling. It was a bit tricky to figure out, but I managed to accomplish it! There's a bug where you can scroll down past the end of text, I will look into that later. But for now, it all works! I just need to add descriptions for other races.

All of this was done today, now I'm going to bed! :)

Saturday, September 10, 2011

Ship Design update

Since I've overhauled the technology system, I have to redo the other screens. I started with ship design, and first thing I did was to create a window class where you can drag it around. Then I started on a screen for picking equipment. At this time, the artist gave me a new batch of artwork which includes some background border, buttons, etc. So I've been busy replacing some artwork, and changing how buttons work internally to support the new artwork.

Here's a preview of what I've accomplished so far. Notice the new weapon type "Shockwave"? It will be mainly useful for kamikaze-type ships that barge in and blow up stuff, and for anti-missile purposes.

On the left column of equipment selection is the weapon type. Middle is the type of mount (large, small, point defense, dual cannon, etc). On right is list of modifiers for that equipment type, so if you have shield piercing for beam weapons, it's available for all beam weapons, but it also adds space and cost based on the equipment space/cost.

This three columns will be how you'll create different weapons and equipment like computers and engines. I need to add information display under the three columns to show space usage, cost, and equipment description, then it'll be done.

Here's the screenshot!

Tuesday, August 30, 2011

Progress Update

I thought I'd update you guys on the progress with the game. I've finished the technology overhaul. All the basics are in place now. I also reworked the research screen, so it's functional again.

I also tested racial technologies, and they worked flawlessly.

I'm going to work on ship design and fleet list screens next, then I will focus on space combat.

Thursday, August 25, 2011

New Race, System Ships, and Progress!

A customer has ordered a race for the game. They're the "Space (Pirate) Hamsters" or "Space Hamsters" officially. They're pirates, salvagers, brutes, and all that. They excel in ground combat and making babies, but they're not too smart. Their ships are cobbled together from old or salvaged parts. This is what they look like (Kudos to the artist for awesome work on it):



Please welcome the Space Hamsters to the galaxy of Beyond Beyaan!

Now onto System Ships. They were simpler to implement than I'd thought they would be, and I had to tweak the UI around a bit to make it all work logically. Each star system will store a list of system fleets. If you build a system ship, it will be added to existing fleet that's under your empire. Notice the term "Patrolling" in the screenshot? This indicate that this fleet is system fleet, and can't go anywhere. Also the ship sliders for amount of ships to send are greyed out so you can't send it anywhere. They don't have the engines for interstellar travel. Now for the screenshot! (There will be a new fleet icon for system ships so you can easily see it compared to normal fleet and transport fleet)



The last thing that I'll mention is that the basics of technology is now implemented. The code for loading technologies are re-done, as well as code that updates the research progress. The new system now allows you to research each technology once, so I'll have to create a completely new UI system to work with that. One other thing that I've implemented is racial technologies. Each race now have its own technologies.xml file, and they are loaded as well as the generic technologies that all races will have. However, I don't really like the idea of racial technologies, so the vanilla version probably won't have any. But it's there for modding purposes. There's a few more items that i need to add before I can re-do the ship design screen, but this was a major milestone that I've managed to accomplish :)

As usual, comments are welcome!