ponedjeljak, 28. prosinca 2015.

Preview release v0.4.2

Finally the project has reached some presentable level. It's still rough around the edges, not too user friendly but if you want to see for yourself where Stareater stands, here is a downloadable package.

Download Stareater v0.4.2

Package is a simple zip file, extract it and start Stareater.exe. Since it's .Net application under the hood it should work on Windows out of the box. If you have really old windows machine then you might have to install .Net 4.0 framework. The game should also work on Linux and Mac with Mono. Please report any issue you encounter either in the comment section on this blog or at GitHub. Especially if you encounter graphical bug where objects seam to be drawn in wrong order like star names below wormholes.

Have fun!

srijeda, 16. prosinca 2015.


As you might have guessed from previous posts, colonization has been implemented. Like some other features it was not a direct translation from CroVar iteration. In CroVar version colonization followed traditional Master of Orion I steps: bring a colony ship to a star system and land it on an empty planet. Additionally you could bring multiple colony ships and choose how many will land on which planet. Multiple ships on the same planet would establish a bigger colony. This is how the GUI for it looked:

Planets in the system are on the left side, information about a selected planet and estimated productivity are on the right side and a number of ships to land is selected with a slider below it. At first I thought about doing the same in this iteration but certain discussion on Wargaming's Master of Orion forum nudged me to think about other possibilities. In Master of Orion II there was a way to arrange colonization from a planet list. There was a screen with a list of planets which could be filtered and sorted by quality and size. Once you've decided which planet was the best candidate you could select it and press a "colonize" button. If you had available colony ships the game would direct a nearest one to the planet's star system and following turns the ship would fly there and land. Now don't kill me for bringing Master of Orion III up, that game went one step further in not necessarily bad way. There you could zoom in to a star system, mark planets for colonization and your unquenchable AI viceroy would build needed colony ships and send them to the planets.

I've decided to do something similar in the Stareater. Marking an empty planet for colonization creates a colonization project and on colonization screen you can decide which star system will build colony ships for which planet. Once built, colony ships will fly toward to planet and wait until there is enough of them. When minimum population has been accumulated, a colony is established.

GUI could use more work but that would be a job for another time. I've been looking around and there is an interesting GUI library for OpenGL, it's not so well maintained but I'll keep it in mind for that sunny day when I'll be converting Windows forms GUI to OpenGL. Now next on the menu: space battles!

petak, 11. prosinca 2015.

Stareater iterations

Before I move to the next topic I'd like to make a little intermission. Stareater is long running project, it's about 7 years old and yeah, still not done. I admit I have taken on very ambitious goal back then but instead of giving up when things got over my head I have started over. If you have been following this blog you'd noticed just that, the current programming effort is a rewrite of the previous iteration. What might have been lost to time is the fact that there has been one before that. Below is a short description of each iteration and names I made up just now so I can refer to them in future posts: 
  • DIY or "do it yourself" was the very first incarnation of the Stareater where I have literately went by coding everything myself in C++. Only "others" work I took was OpenGL for graphics and GLUT for "windowing" (how application window is started and managed) and mouse and keyboard input. Unfortunately such ambition had to hit a brick wall somewhere and it was in GUI department. Making GUI engine from scratch is science for itself and I've spent more time on it then making an actual game. Since I didn't take robust enough approach it got really tiresome. DIY iteration ended with pretty beautiful galaxy map (stars only, no planets), map navigation and minimal GUI for starting the game.
  • CroVar or "Croatian variables" began as GUI mockup project for DIY iteration. It was C# Windows Forms project and at some point I realized I'd be happier to spend more time on game logic and keep GUI effort to a minimum. So I filled in mockups with a actual game logic from DIY and somewhere along the line I've decided to use Croatian words for class and variable names. That's why I'd call this version CroVar. This iteration got pretty far, stars, planets and colonies were fully functional, planets could be colonized, ships could be designed, built and moved, foundation for AI was laid down and even space battles worked!
  • WhyNot is the current iteration of the Stareater. At some point CroVar code got big enough mess to consider refactoring it. At first wanted only to make better separation of GUI logic and game logic but I figured I could fix many other wrong decisions made in CroVar. And it resulted in a total rewrite with good amount of why not this too additions? In all seriousness "why not" approach saved me a lot more trouble than it has brought me and it improved the quality of the code and final product. Mod files got more intuitive format, OpenGL graphics are back, it got easier to code new features and simplified changing and maintaining old features.