Pre-Order the Game!

Desura Digital Distribution

Saturday, October 27, 2012

Protip for 4X Developers...

Warning! Memory trip ahead!  This is just me reminiscing on the development of Beyond Beyaan.

Looking back on the development process of Beyond Beyaan, there is one regret in how I developed the game, and it is ultimately why the development took so long.  I didn't really have a concrete design, I just wanted something that's similar to MoO 1, but with my own "improvements".  So at first I thought having a grid-based ship movement in the galaxy would be fun.

I also wanted the ship construction to be empire-wide, to reduce micromanagement.  But then I realized, what if two systems are cut off from each other in middle, how do they contribute to the production?  So I scrapped the fuel range.  I also added production for empire-wide as shown:

Note that you determine how much each increment will contribute to the production.  If you select 5, then each increment will add 5 BC to the production.  This was very unwieldly and I ultimately scrapped that system.  I then thought it'd be a neat idea to have nebulaes act as "friction" and your fleets will need to find the quickest path.

I then decided to follow MoO 1's slider system for planets.  I also decided on stacked ships, just like MoO 1.  And an identical transport system as well.

I started work on the combat screen, and other stuff, when I had the brillant idea of using scripts for equipment on ships, but I believed at the time that it won't work too well with stacked ships.  So I scrapped the idea of stacked ships:

Later, I decided to make scripting even more flexible, and realized that this new system supports stacked ships, but the damage was already done.  The UI is now designed around single ships.  However, the combat process was pretty close to what I wanted it to look like (similar to MoO 1)

This new system required an overhaul of basically the entire data structure of ships and such.  Deciding to take it even further, I made it possible to customize starting ships, planets, systems, etc.  However, this consumed a lot of time with very little tangible benefits, making it hard to stay motivated to work on the game.

Then I finally decided that nebula as it was didn't look good, so I removed it and realized that what's the point of grid-based movement?  It'd be a very rare thing to intercept someone in space, and there's nothing exciting in the empty spaces.  So I scrapped that system and replaced it with star to star movement.

I then decided that I want the game to be even more moddable, so I changed how resources work.  This was another overhaul, as well as my decision to change from sliders to regional developments.

So, looking back over all of those design changes and overhauls (I think the current overhaul of the data system to the final system will be 6th or 7th overhaul), I realized something.  If I knew what I really wanted, and had the understandings that I do now, at the time when I started on this project, the game would probably be done by now.  But that's the only regret.  I don't regret all the learning and experiences that I've had with the process.  When I made my first game, an asteroids clone, it took me 9 months to finally finish it. However, it was a very buggy game.  Then a few years later, I decided to make the game again, to make a better version, and it took me a month to make an similar game but without the bugs.  Then again a few years later I decided to remake the game as an way to learn C# and Gorgon engine.  It took a month again, but I was able to add a LOT of new features such as varying types of asteroids, upgrades, etc.

So basically what I'm saying is that when I'm done with Beyond Beyaan, if I were to make another 4X game, it'd be a lot faster and less messy, because of the experiences that I've had with Beyond Beyaan.  So here's finally the protip: If you're developing a game, know what you want in the game, and set limits on features based on your skill and experience.  

Another problem with Beyond Beyaan is feature creep.  Too often I'd go "Oh, that's an awesome idea, let's add that!".  It's like building a house, then deciding that you didn't like a wall's position, so you destroy it and build a new wall in a new place.  It will never be perfect, so you gotta decide on what you want, and what you are willing to put up with in terms of cut features.

The reason for this lengthy post is that I just started work on overhauling the code for handling the new final data files.  The changes basically broke everything in the game, from the UI to the ships to the technology.  I can't even compile it.  I won't commit my changes to google source control until it's able to be compiled.  It's like knocking down the whole house, and saving sections of it for re-use.

Tuesday, October 9, 2012

Final Ship Data Structure

I mentioned in my last post that I'm working on the projects and re-working technology system.  What I didn't realize at the moment is that it'd require overhaul of the technology system AND data files.  This occured when I was thinking about equipment in ships, and how should mounts and modifiers work?  How do the game know to create a combo box, or a list of checkboxes?

I believe that I have figured out a system that will be final and flexible.  This is how the data will look like (I've started work on updating the data files to match the new system)

ShipEquipments.xml - Contains three types of items:

ShipItem - The basic data about an item, it also have "modifiers" and "enhancers", that if a modifier or enhancer matches the type (For example, Laser would have beamModifiers and beamEnhancers as values), it is added to the UI in ship design.  Can have more than 1 modifier and/or enhancer types.
ShipModifier - This is an item that can be used to modify ShipItem.  It defines which types it can modify.  Can modify more than 1 type.  However, the item can only pick one modifier for a type.  So if an item have "BeamModifier" and "BeamModifier2" types, it can only have one item for each type, totalling 2 modifiers.
ShipEnhancer - This is similar to ShipModifier, but in that multiple enhancers can be added (checkboxes instead of a combobox).

With this system, it's possible to create a game like MoO 1 (have all items be standalones, no modifiers or enhancers), MoO 2 (have firing arc modifiers and special attributes as enhancers), or MoO 3 (sized mount modifiers with special attributes enhancers).

I should have this new system done by end of week, if all goes well!

Friday, October 5, 2012


My baby passed several tests, so she no longer need oxygen tube or heart/lung monitor wires hooked up anymore! She's doing pretty well!  Things are starting to stabilize in our family, aside from my older daughter (she's 3 years old) being jealous of attention that my baby receives :)  I will post a picture of them soon :)

I've taken a break from Beyond Beyaan recently, with occasional updates and dabbling in UI work, and it has helped relieve some stress.  I also played Torchlight II, which I highly recommend!  All in all, I was able to relax and recover from the intense experience from past several months.  Now I'm feeling refreshed and invigorated!  I'm ready to tackle this project again!

While going over the game, I realized that I'm closer to the end than I thought!  My goal was to get the game playable, and there's only several items that needs to be implemented, most everything is pretty much done.  The rest is just UI work and polishing!  I will split those into four stages:

First stage:
- Finish the economy model - It's nearly done, just need to have local, system, and empire production being consumed in projects

- Add projects system (which include researching items, buildings, etc, they will all use the same framework)

- Rework the technology system to work with the new project.  Technologies will now be same as projects, the only difference is that they are empire-wide projects.  They unlock rewards, such as new technologies to research, or items to use in ships, or empire-wide racial improvements, etc.  It'll be possible for an "tech" to yield more than one reward.  I'm also adding possibility for a technology to remove rewards.  For example, if you research Laser Cannon II, it removes Laser Cannon I because II is cheaper and better.  Or to remove other technology items available for research if you want to follow Master of Orion 2 tech system.

At this point, the empire management framework is done, you can build ships, develop planets, research, etc.

Second stage:
-Add several parameters in space combat so that each particle can process the environment (nearest enemy ship, nearest ship, etc).  This will enable missiles and torpedoes.

-Finish the squadron framework - This means retreating, ending turn, "charging up" phase, basically the rest of stuff to have the combat fully workable.  Also changing how you fire weapons for less micro/clicking.

-Add victory/loss checks, as well as UI for choosing which squadrons to fight with or against (you could have 2 empires against 1 for example, or 5 empire free for all)

At this point, the game is now playable, but not quite winnable yet.

Third stage:

-Add empire victory/loss script support (so you can customize how to win or lose.  For example, if you want an economy victory, the first empire to reach 1 million BC wins in a game where there's no combat at all, only research and expansion)

-Add saving/loading of games.

At this point, the game is winnable, and will be almost ready for beta (beta meaning feature complete).

Fourth stage:

-UI work - this means reworking the remaining screens to work with the above changes.  For example, new ship design UI to work with the new technology system, planet management screen to work with the new production screen (macromanagement), etc.

-Add support for AI scripting - This won't be finished until after the game is final, I have almost no experience with AI, so this will be a learning experience.  AI will be dumb at beginning, but at least it'll give you something to play against :)

At this point, I will declare the game to be in beta stage.  But wait!  Some of you may notice that I didn't mention diplomacy.  I plan on adding it during the beta stage because it's not vital to making the game playable.  I do have some clever ideas that I think you may like.  Beta will be basically polishing and adding the extra features that makes the game enjoyable such as random events and news reports, but are not required to have it playable.


Now, another idea that I'm kicking around is starting a kickstarter project to raise funds to complete the game's assets.  I'm thinking of doing it after first stage is done.  The goal will be modest, but hopefully with kickstarter's popularity, I can finish the rest of assets (more race artwork, more icons, weapon graphics like missiles and beams, etc) and maybe even add an intro and victory/loss videos!  If you have tips and advice for kickstarter projects, let me know!

I'm ready to start work on the game again!  Hopefully I'll be back to posting an update a week again!