petak, 13. rujna 2019.

Release v0.8

Despite some recent setbacks another milestone has come to a close in exactly one year after previous one. There are slightly fewer new game features but a number of features got fully functional (instead of being stubbed) and under the hood there are lot of improvements.

Download Stareater v0.8

New game features:
  • Star system policies - colonies are managed indirectly by picking a policy for whole star system.
  • Galaxy scan range - other player ships are only visible within certain distance from owned colonies and starships.
  • Fuel mechanic - a resource pool used by ships traveling away from owned colonies. Going further away uses up more fuel and if too much is used the economy is penalized.
  • Fleet pathfinding - ships can be sent more then one starlane "hop" away and they'll automatically pick the fastest route.
 Reworked game features:
  • Map generator - now actually tries to balance planet sizes and traits instead of placing them purely randomly. There is a lot more planet traits and a star type affects planets. Map preview shows star system quality.
  • Colonization - generalized with interstellar migration. Both use same population transporters and automated management logic (routing, loading and unloading).
  • Catalyzer (space monster) - retreats from battle after tainting a star.
Under the hood improvements:
  • Nestable GUI elements - allows for more complex user interface. 
  • Galaxy map GUI - mostly replaced with game engine GUI. Removed Winforms toolbar. Made graphics for new interface elements (end turn button, scan range toggle, toolbar replacement buttons, policy cycle button).
  • Tooltips - hovering a mouse over certain UI elements reveals more information about it.
  • Reworked text rendering - big texts are not blurry any more but small text are bit less crisp. In general characters to display graphics pipeline is more sensible now.
  • Small tweaks to tech tree.
  • Fixed issues running under mono on Linux.
  • Fixed lockup when a player is attacked at undefended system.

srijeda, 4. rujna 2019.

Nailing down a thing

Real life has been really busy past few months and I've been tackling very nasty issue in the Stareater so that's why there has been such long time from last update. The project is still going and version 0.8 will soon be published. The nastiness of rendering text is finished (for now) but the real life will remain busy so "soon" will be probably somewhere this month.

petak, 31. svibnja 2019.

Preview release v0.7.4

A long awaited tooltips are here, you can finally find out what is what and fleets can now find shortest path on their own.

Download Stareater 0.7.4

Tooltips look small on the screen and trivial to the player but that simplicity hides quite a lot of complexity under the hood. First of all positioning a tooltip is mildly complex, it is tied to both mouse position and originating GUI component placement, it must be moved horizontally in order to not be clipped by the edges of a window and moved below a cursor if it wouldn't fit above. That two dimenstions but there is a matter of depth, tooltips should be above regular UI components and not block mouse events on them. I went a step further with this one to lay the groundwork for pop-up windows so this is more complex than it need to be for now. And then there is the time dimension, a tooltip appears after a small delay but not if a mouse has moved away in the mean time. All four dimensions are simple to moderately complex on their own and look trivial to a user but they have to work in tandem without hiccup and that's where true complexity arises and where a robust GUI framework pays off.

For now tooltips can be added only to in-engine GUI elements so old WinForms that sorely need explanation can't benefit from them. But that will eventually be solved through ongoing process of conversion to new GUI framework. On top of that I'm trying to work out something better for text rendering. As you can see on the image above, it is not very sharp and there are some stray dots. I'm prototyping SDF based solution for half a year already but it still needs more time in the oven. Naive approach is not very practical and doesn't produce very good results, more advanced approach that promises awesome results takes time to implement, mainly due to how uncooperative (and archaic) font manipulation in standard .Net is. I've only recently solved the hurdle of getting a list of lines and curves out of letters so I can proceed with porting aforementioned advanced SDF method from C to C# but it has also opened a new avenue to explore. I can make a somewhat simpler method that sacrifices the quality of result for a speed of prototyping. In any case I hope to sort out text rendering before the summer vacation.

Ship pathfinding is another big feature in this version, allowing your fleets to automatically pick the quickest path over the starlane network. This greatly helps colony ships and other population transporters that are by default automated. Previously they'd just plot a direct course to a destination and in early game that could result in 200 turn journey unless a player didn't override the route. This feature doesn't necessarily limit the movement to the starlane network because starlanes add to the speed rather than multiply it, much like a conveyor belt. When you get to faster star drives pathfinding will likely give you a path that is partially or wholly off lane and there is a way (ctrl+click) to force direct flight anyway.

Here I took some time to refactor transport automation code and and some parts of fleet command code. Previously automation code was quite messy to read, figure out what is going on and where and why it's not working properly. Now it's one third shorter and ten times more readable. There are still some issue but they will be much easier to correct then with the old code.

And finally there are three more small changes made in this version: biology is merged with chemistry, fuel production is increased and ships can be sent even if you don't produce enough fuel. While testing transport automation I've found fuel mechanic to be too restrictive, it is supposed to prevent you from sending a large fleets deep into enemy territory, not to prevent you from colonizing neighboring star. So now you can freely send a fleet on the long journey if you are OK with economic penalty instead of outright being blocked from doing that. Base fuel production is increased 2.5 times and I'm inclined to increase it further so a homeworld could support at least a few colonization fleets for free but I'll will wait for now to see how that will mesh with technology balance. Speaking of which I found it hard to come up with 24 (8 tiers, up to 3 items each) biology technologies that are distinct enough and since chemistry was a bit sparse too, I've decided to merge the two. This unfortunately means removal of UKSA, an organization specialized in biology.

ponedjeljak, 8. travnja 2019.

Preview release v0.7.3

Another Stareater release is here, bringing completed map generator and various improvements.

Download Stareater v0.7.3

Stareater map generator works in three phases: star placement, wormhole placement and filling up star system. Until now only first two phases were implemented while the final one was a stub (minimal implementation to keep systems non-empty). Implementation of the final phase brought with it more goodies in areas outside map generator. Planet and star traits are reworked, internally they are now two different things, planet traits are dead simple (a planet either has or doesn't have certain trait) while star traits have complex behaviors like temporary duration and the ability to place and remove traits from planets. There are a lot also more planet traits now: toxic (less food), radioactive, three levels of irradiated, two for atmosphere, two for magnetosphere (reduces radiation level), three for gravity, three for mineral abundance and two for temperature. All of them implemented and working. You can even get greenhouse effect if a planet has dense atmosphere and host star radiation level increases.

Map review is also updated to show the difference between map quality settings. Player can choose between various levels of early game map quality (environment selector) and various levels of late game quality (potential selector). Star system potentials are depicted with the size of darker outer circle and starting environments with brighter inner circle.

Other improvements are:
  • Catalyzer space monsters are tiny bit smarter now, they fly off after tainting a star with "catalyzed" trait.
  • Catalyzers now actually do attempt to taint the star. There was a bug that spawned them without necessary equipment.
  • Fixed a crash when removig a ship design.
  • Fixed game freeze when the player is attacked at undefended system (ie. when catalyzer shows up).
  • The game is tested on Linux, made to run with mono on Linux and code is tweaked to compile in MonoDevelop. It's not tested on Mac but it should work there too.

ponedjeljak, 4. veljače 2019.

Preview release v0.7.2

New year brings new Stareater release. There are a few but big changes this time around.

Download Stareater v0.7.2

Also I owe you progress report from the last release. I thought about writing in-depth post detailing how drawing scanner range circles works first but now I don't think I'll be done with it any time soon. New stuff in v0.7.1:

  • Star system policies change how colony management is done. Filling building queue and setting investment slider on colonies is managed by setting system-wide policy. Hopefully this will reduce meaningless micromanagement and allow to see on a glance what is happening where. Policies are basically predefined building queues and investment presets which can be switched with a single cycle button. For now there are two policies: develop and exploit. "Develop" focuses on building up colonies, leaving minimal resources for ship construction while "exploit" is the opposite, giving most of resources to space projects and small amount to colony infrastructure improvement. Policies are mindful about excess resources, if you have fully developed colonies is a system with "develop" policy industry points from internal development would spill over to space projects, effectively giving the benefit of "exploit" policy. Future idea is to add "defend" policy which boosts planetary defenses but sacrifices economy.
  • Interstellar scan range limits how far away you can see from your star systems. Nothing ground braking from player perspective but drawing those round edges turned out to be a major undertaking. I find it strange that solution to this problem is not well documented or easy to find on the net. The best I could find are brute force solutions that involve drawing screen sized image in memory and I don't want to assume player's GPU will have that much texture memory. In any case I've worked out much more efficient solution.
  • Toggle button made in the game's GUI engine for showing and hiding scan range.
v0.7.2 highlights:
  • Fuel serves a purpose of both movement range and command points in Master of Orion 2. If you played MoO 2 this may sound like a strange marriage but stick with me. Travel distance is not limited to a fixed number of light years but the limit arises from the available fuel points. Each ship size consumes a certain number of fuel points and consumption rises exponentially with the distance from friendly stars. And I really mean exponentially, it doubles for each light year of distance. The idea is to allow smaller fleets and scouts to travel deeper into hostile territory than big front line fleets. To make matters simpler there is no stock piling of fuel points, the amount you get per turn is either used or lost to the void. Think of it more like how much fuel can be produced on demand then how many canisters you produce. I may rename it to "supply capacity" or something like that to remove potential confusion. And final thing about this feature, in case your navy ends up consuming more fuel than available, economic penalty will be imposed, similar to going into negative with command points in MoO 2.
  • Interstellar migration allows developed colonies to jump start new colonies and comes with unexpected baggage: transport automation. Unlike MoO 2 transport ships are not invisible abstraction but ships as real as military ones. Their movement and passengers are automated but player can override it as he sees fit. Or at least will be so, for now the player can manage movement but has to leave the passengers to the automation. Passengers will try to disembark on a planet that accepts immigrants and embark from planets that are too full.
  • Reworked colonization reuses transport ships, both migration and colonization is done with the same kind of ships with the difference being that upon colonization some ships land and get converted to factories.
  • Multilayer GUI, reworked mouse handling and slider element are continual effort to phase out WinForms GUI. With those additions I managed to replace star and colony management panel, it's not a looker at the moment but it will be easier to improve the old one.

četvrtak, 13. rujna 2018.

Release v0.7

Another big milestone came to a close. Thanks to the effort in last milestone this one has considerably more new features and content.

Download Stareater v0.7

Major features of the milestone: 
  • Torpedoes are area of effect missiles which can reach targets over long distance. They are actually combination of two features, splash damage which can hit multiple units in a tile and a missile as a board piece.
  • New GUI implemented entirely in the game's graphics engine which will gradually replace WinForms and make user interface look and behave as the rest of the game.
  • Victory condition is not a stub any more. Players now have to reach stareater's "brain" star and use it to eject (send to normal space) stars in order to earn victory points. Points are awarded to players owning colonies around ejected star, not necessarily to the player who performed ejection.
  • Organizations now have each have affinity for a certain technology field, giving a player one tier for free.
  • Early game technologies (tiers 0-3) are now researchable and do have in-game effect where implementation permits.
  • Intro animation is an example of engine's animation system. Previous animations like selected ship in combat are converted to new system which automates animation handling and simplifies tying scene objects with animation effects.

Minor features of the milestone:

  • Autosave that saves a game after every turn.
  • Interplanetary migration and colony desirability score which makes people move from crowded to less populated colonies in the system, making smaller colonies grow quicker.
  • Hostile planet maintenance will make a player choose planets to colonize more carefully since colonies on hostile planet have to be supported by the rest of the empire.
  • Save game preview will let you tell at the glance which save game belongs to which game.
  • Space combat camera allows you to zoom and pan combat map just like galaxy map.

Under the hood changes:

  • Space combat messaging brings order to the multi-threaded world of space combat where game rules run in one thread, human facing interface in another and each AI in it's own. It also resolves some issues where AI vs AI could cause stack overflow.
  • Fixed designs as opposed to predefined designs don't use highest component levels available, they have predefined levels and ignore player's technology levels so there is no more need for native organisms to have fake technologies.
  • Command line arguments are primarily development convenience, allows for simplified project setup process (no need for copying or linking game data, default command line arguments already point to the folders of interest) and makes debugging release build easier.
  • States without T4 is another development convenience but this one makes games more stable. It ensures that all data that should be saved in a file have saving, loading and copying logic (for read-only view while waiting turn to process or AI to finish) with minimal code overhead.

četvrtak, 10. svibnja 2018.

Preview release v0.6.6

Welcome migrants to more desirable world of tier 3 animations. I think I got it all in one sentence.

Download Stareater v0.6.6-alpha

In the last release animations were introduced but nothing new was done with them, only existing animations got rewritten. Now that foundation is used to create whole new intro animation when the game program is started.

Interesting thing about how it works under the hood is that specifying when and what happens with animation eerily looks like electric circuit schema. There are resistors (delays), parallel and series circuits, only batteries are missing. Here is a bit exaggerated figure (in reality parallel and series circuits are not physically connected but series "resistor" is big enough to simulate the effect):

One more feature from old CroVar version returned: interplanetary migration. Population from more populated worlds would move to less populated ones inside a star system. This is combined with planet desirability score. For now it's just a function of current and maximum population (less crowded is better) but when I implement more functions for formulas I'll add planet traits and technologies to influence it. I'm eagerly looking forward to a day when tooltips get implemented so I can show you how underlying "spreadsheet" works.

And as usual content update for release is 3rd tier of technologies. This bring along some new ship components, updated calculation formulas and brand new colony construction project: soil enrichment. Upon completion it gives a planet the "fertile" trait which is a new thing buildings can do now.