Pages

Saturday, November 14, 2020

Ancient Star - serialization

The nice convention about mobile applications is that you can turn them "off" at any moment and continue where you've left off later. Yeah, some apps don't work that way but developers are generally encouraged to make apps tolerant to being paused and resumed at any moment. In order to pull this off in the Ancient Star I need a solid system for saving and loading game data.

There are other things to do to make an app lifecycle aware (handle pausing, stopping, and resuming) but Android SDK does a very good job of covering the usual parts. Built-in UI components take care of themselves, custom components (like one where galaxy map is drawn) are fairly easy to make persistent and it's easy to move data around in a lifecycle aware manner. But in comparison getting game data into a format that can be written to a file and back is significantly more work. You might be fooled by built-in JSON converter and open source solutions that this is an already solved problem but I haven't found a solution with both low maintenance overhead and the ability to cope with complex data structures.

When serializing data there are two parts of the process, picking up data from objects and converting data. Think of it as answering "what" and "how" questions. Serializers like built-in Android one expect from app developer to answer "what" question so the code ends up handling the same piece of an object in three different places: declaration, serialization, and deserialization. This incurs considerable code maintenance overhead. Whenever you add a new data member to an object, you have to remember to include it in serialization and deserialization functions. Forgetting to do so is still legal code, the compiler will not complain about it and the app might run for a good while until the issue becomes apparent. And even then it's not trivial to figure out which member did have you forgotten to serialize or deserialize. Better libraries ask you only to put a special annotation next to member declaration so it is very easy to keep serialization coverage in sync with the actual object structure.

As long the structure is simple (tree). Such serializers work by dereferencing each reference and embedding values behind it inside the object that held the reference. So if there is an object referenced by multiple objects its data will get serialized multiple times, producing unnecessary data duplication in a save file, and what is worse, deserialization would not be able to deduplicate it, potentially producing a faulty game state. Cyclical references are even worse, they'll make a serializer run in an infinite loop. And it's easy to have data with such structures. For instance, in the Ancient Star, each Star object can have a reference to a Colony object, Colony has a reference to a Player who owns it and the Player has a list of scouted Stars. That's an example of both a cycle and multiple references to the same Player object since each colony references its owner. It is possible to swap direct references with indirect ones and make data simpler in the eyes of a serializer but it comes with the price of more complicated code. And besides, in the Stareater I did develop a serializer that both utilizes annotations and can work with complex reference networks.

The first "trick" I used there is to have the serializer make indirect references out of real ones. It generates a unique "name" for each object and references are substituted with those names. The second "trick" was to gradually build a reference network while deserializing, similar to how in the normal course of the game the complexity of data gradually increases. For instance, initially, stars don't have colonies, are not scouted, and during the game each player scouts and colonize more and more stars. Similarly, the deserializer can first create objects with only bare necessary data (primitives and references required by a constructor) and fill them with remaining data in the second pass. So how long it took to port the code from the Stareater? 30% of the total development time so far!

I expected it would take some time because I wanted to learn and use Java's annotation processor stack for code generation but I expected it to take half as much. Stareater is written in C# and runs on .Net (CRL actually) while Ancient Star runs in Java Virtual Machine (or something close to it). Certain metadata (generic parameters) which is available in CRL is not available in JVM and Stareater code depends on it. I didn't know that until I ported most of the code and give it a spin. I had to scrap and rebuild the serialization code two more times until I arrived at a workable solution. It was a frustrating road but I'm glad I have done it. It will pay off in the future.

Monday, November 9, 2020

Ancient Star - introduction


Wouldn't it be awesome to have a 4X game on a phone? Now that I mention it, yes? Then I recommend Uciana, it's worth the price. It's so easy to turn on while on break, play a turn or ten, turn it off, and continue later. Do you need more such games? Well, Ancient Star is going to be one.

The ambition level for the Ancient Star project is to make a simple game, akin to Master of Orion 1, but unlike Stareater, to have a complete product. Published by the end of the year, with working AI and multiplayer. That's right, completed, and published in two months. Or at least have a beta version by then. I've been developing it for two months already and about 75% of core game logic is finished. When the app as a whole is considered (UI polish, graphics, writing, AI, multiplayer, tests, publishing), the completion level is about 45%. Here is how looks at the moment:

Galaxy map functions similar to Google Maps map, pan by dragging with one finger, zoom by pinching with two fingers, tap to get information about an object in the panel at the bottom. Colony management is a simple focus setting and a building queue. Features implemented so far:

  • Colony development
  • Ship construction
  • Fleet movement
  • Colonization
  • Space combat
  • Bombardment
  • Turn reports

For now, graphics are minimal, either stock Android SDK images or basic shapes, UI is not styled, and so on. The idea is to get core game features in and then work on polish and visuals. Hopefully, that second phase will come soon, at the end of this month. Stay tuned for more development news about Ancient Star on this blog.

Friday, December 9, 2016

Master of Orion II: Gnolams

See Master of Orion II: every race for introduction and links to games with other stock races.


Gnolams are another race which where introduced in Master of Orion II. Their stereotype is money making and their trait list reflects that quite strongly: +1 BC, expert traders, lucky, low G and dictatorship government.

BC (also shown as tax +1) bonus is quite powerful (cost 7 points) because it's multiplicative with other sources of income such as government, morale and buildings. It's as if each population unit counts as two for the purpose of taxation. Fantastic traders (in some places referred as expert traders, yeah, game can't make up it's mind) have all sorts of situational bonuses: +25% BC from trade treaties, double income from surplus food and double profit from building trade goods. Trade treaty bonus looks decent but absolute numbers are not to so big and normal taxation bonus will always overshadow it. Extra cash from surplus food is also symbolic bonus because early on you want to have as smallest surplus as possible and later on you won't be producing so much food to see comparable difference to regular taxation. More cash from trade goods on the other hand can have big impact because a good planet can dish out a lot of industry points. The perk costs 4 points but in the eyes of many players it's not worth half the cost unless one is about exploiting credit cheat. Lucky is another ineffective trait, for 3 points only good events can happen to the player and Antarans rarely attack his colonies. Well, events happen every 50 turns to a random player so in four player on average this perk does nothing for 200 turns. Or on the positive side it does one thing during the whole game. Not being pestered by Antarans early on is helpful but they too appear very infrequently. Low G is negative trait, it costs -5 points and the race suffers -25% penalty to farming, industry and research on normal G planet and -10 in ground combat. There is no economy penalty on low G planets and the homeworld has low gravity. Dictatorship is default government type, see Alkari playthrough for more details.

Since last few games on normal turned out to be quite easy, this time I've started a game on hard. My starting position was decent, large desert and small ultra rich barren. Not spectacular, weak early game potential but quite good for the long run. While homeworld was providing food, large desert became research center and small ultra rich an emergency shipyard and main housing (extra population growth) center. Neighboring stars were so so, couple of irradiated average planets and a medium tundra in Weg system. I've landed my initial colony ship on tundra and immediately (turn 7) got in contact with Sakkra. At first I thought it's going to be an opportunity to use my trade bonus but it turned out Sakkrans were repulsive. If that didn't spell early war clearly enough, positions of their colonies did. In four player maps homeworlds are usually near corners but their was in a middle of the map. Cephee, their first expansion was in my direction and it was quite logical they will use it as staging point for attacking Weg. I've scouted remaining stars I had in range, encountered space crystal at Mensa system which guarded large ultra rich gaia with natives and parked other scout at neutral Yen system. That proved to be a good decision because on turn 22 I've spotted Sakkra troop transporter going to Cephee and it gave me time to prepare defense at Weg. My defenses were humble, two frigates, former scouts refitted with two unrefined nuclear missiles each. On turn 30 Sakkra moved to Weg but didn't attack. They blockaded the system for a few turns, until I've built 3rd frigate.


The war was dragging out, I've kept building missile frigates and eventually had enough to blockade Cephee and keep Weg safe from invasion. I've also invested in espionage and managed to steal deuterium fuel cell and biosphere technology, to sabotage a few buildings in Sakkra main system and most importantly the star base in Cephee system. After some time I even attempted to conquer a colony at Cephee but my ground combat score was too low, partly due to my -10 from low G and partly to Sakkran +10 while defending. On turn 110 I've researched planetary supercomputers and established contact with Meklars. While Sakkra and I played tug of war with two systems each, they expanded to four systems. I've tried my diplomatic skills on them but they kept refusing to sign any treaty so I tried something silly, trade supercomputers for heavy armor. It improved my standing a bit but still it took a lot of perseverance to get trade treaty. At least one solid step toward non-aggression pact. War with Sakkra went well, I've advanced chemistry by researching tritanium and started replace frigates with destroyers. On turn 151 as I was getting ready to send colonization fleet to Yen system, hyperspace flux happened preventing all interstellar travel. By the time the flux lifted Sakkra built a colonization fleet too and occupied Yen before I could. While I finally got safety by signing non-aggression pact with Meklar, on turn 188 Antarans decided to raid Yen system. Sakkra was unable to defend so I got the second chance and took the system before anybody got the same idea.

Settling Yen got me in range with Silicoids, another repulsive race. At first I didn't know how powerful they were so I've left Sakkra alone (they where down to their home system) and hoped they will be a distraction while I build up my army. I managed to steal positronic computer from Sakkras and advance physics on my own so I started to refit missile ships with lasers, a lot of lasers. Plus usual special equipment for beam ships, battle scanner and battle pods. Thing is everybody had class I shields which are not strong enough to make lasers ineffective and miniaturized armor piercing lasers are very strong weapon. While I was arming up Tanus, a colony leader, offered me his services and when I hired him I got pleasantly surprised by getting imperium, an advanced govnerment technology from him. My first field test of laser destroyers was against Sakkra who tried to invade me with quite sizable fleet (4 or so battleships with 3 more smaller ones). Lasers ripped their titanium hull to shreds. Then I figured I have enough military power to deal with space crystal and on turn 212 I colonized juicy large ultra rich gaia in Mensa system. I pumped all my money and excess population (mainly from small ultra rich in my home system) to that colony and turned it into a heavy duty shipyard. At this point I've filled command point capacity with destroyers and the time came for bigger ships so I started to build battleships. Where destroyers where packing 9 lasers, battleships could go up to 40. While I was preparing for eventual Silicoid invasion I've also backfilled systems around my homeworld and on turn 240 I was a candidate for galactic council. Silicoids were too numerous to be out voted by Meklars and me at that but that event gave me hope of eventually winning the game with diplomaticy rather then being forced to conflict.

Silicoids on the other hand had no other options then to expand through conquest. On turn 255 they defeated Sakkra and were at war with Meklars and few turns later they tried their luck on me. My laser destroyers and few battleships were strong enough to handle their titans but not powerful enough repel Antarans who decided to raid Yen (again but with me controlling it this time). Their fleet was quite big at this point, 3 frigates, 2 destroyers and a cruiser. I managed to destroy their frigates and retreat battleships on time, thanks to heavy armor but unfortunately the colony got bombarded to oblivion. On the flip side I had second colony in the system so I've managed to remain in control of the system and rebuild the lost colony. After Antaran incident I've proceeded to conquer Silicoids and grow my population to increase voting power. I would have won at turn 290 election if Meklars did vote for me. I traded few more technologies with them to improve standing, tried to make an alliance with them but as usual they were not keen on signing. 50 turns later I assimilated more of Silicoid empire, switched weaponry to phaser beams, defeated Orion guardian and got Meklars to vote for me.


It was a bit slow game if you go by technology progression rate but considering the cause of it was early and constant war, it was an interesting game. The fact that most of the fights were fought with imperfect technologies (plain, non-MIRV missiles), sort of subversion of expectation brought extra fun factor. So did Gnolam traits influence the game and my play style? Low G certainly did slow my economy down. Monetary bonuses didn't look very influential early on while I was playing but in retrospect I was buying a lot more buildings than I could with other races, I was even able to afford buying ships and I didn't have to wait long to afford most expensive leaders. Also there was no mid-game deficit period where building maintenance cost would grow over tax income and by time as I was half way through technology tree I had enough income to go substantially over command point capacity. Gnolams are deceptively strong. I doubt lucky trait probably saved from negative events because Silicoids got a lot of good events but it kept Antarans away from me for the most part.


One side note, see how top right part of galaxy map is uninhabited? It's not because nobody has bothered to send a colony ship there, it's because there was no habitable planets. There was 2 toxic ones in Python system and the rest where either empty systems or filled with gas giants.

Monday, March 21, 2016

Master of Orion II: Elerians

See Master of Orion II: every race for introduction and links to games with other stock races.

Elerians were introduced in the second installment of the Master of Orion and their archetype is..., um, I'll keep my opinion to myself :). From the other perspective they are space elves. For some reason telepathy and other mind powers are perfectly OK magic to use in science fiction setting and Elerian traits are mix of mind magic and warmongering: +20 ship attack, +25 ship defense, telepathic, omniscient and feudal.

Ship attack and defense bonuses are straightforward extra accuracy and evasion (see Alkari and Bulrathi articles for more info). Telepathic gives a few ordinary bonuses, +10 to espionage and +25% to diplomacy (whatever that means), but the best thing is the mind control ability. After a successful space battle cruisers and larger ships can mind control planets to side with the attacker. Such planets do not suffer from conquered penalty and don't revolt. There is a small space battle effect too, when telepathic race successfully captures a ship, they can use it during the same battle. All in all it's great trait for rushing because early conquest doesn't require building and deploying troop ships and conquered planets are developed sooner. Trait cost is quite high, 6 points. Omniscient on the other hand is cheaper mind magic, for 3 points it reveals the details of all star systems as if they have been scouted and reveals all opponent ships, no matter how well they are hidden. Great for planning your game from the start and it's kind of counter for stealthy ships. Feudalism is a government type and a negative one. It costs -4 points, lowers morale for -20% on colonies without barracks and has -50% penalty to research. There is slight bonus, starships cost 2/3 of normal cost. If you didn't get enough incentive to blitz your opponents with telepathy, feudalism would be screaming "rush or die" at you. Imperium, the advanced form of feudalism has lower research penalty (-25%) and ship cost reduced to 1/3 of the normal price which is awesome if one can live long enough to research it. On the surface Elerians look like disaster, overcommited to rushing from turn 1 when you don't really weapons for breaking early starbases but I'm looking forward to the challenge.


Before doing any move, I observed the map. Systems around me were mostly poor with minerals, while some of them are tundras and ocean I wouldn't gain much by expanding and would lose time. By exploiting wormhole placement and extended range on colony ship I could have reached Darloks very quickly. Either by colonizing Ras system without escort or by colonizing Rhilus system and making outpost at Ras. Both systems had a medium tundra planet but I thought about going with the safer option and use Rhilus later for launching attack on Trilarians. Next question was how to take down star bases? Six command points is barely enough for big enough fleet of missile boats but a friend gave me a different suggestion: heavy lasers. Beam ships are not limited with ammo and heavy mount would provide the range for shooting while staying away from most of opponent's weaponry. Fleet composition was third question, there had to be one cruiser in order to use mind control on planets and the question was what to do with remaining three command points. After some time playing in the ship designer I've decided to simply go with 3 frigates, I could build them much faster (plus I could speed things up by refitting scouts) then a single cruiser or destroyer and frigate and they would be packing similar amount of firepower. I've never played with unminiaturized lasers before and my final ship designs where something unique: frigate design had only a single heavy mount laser (much like A-10 airplane, a cannon with wings and engines) and cruiser had one heavy laser and 20 PD (defensive) lasers. The idea was to have a cruiser provide anti-missile defense while frigates do the heavy lifting.

When I've finally pressed "end turn" button I saw Darloks sending colony ship to Ras. That was great for me because I could mind control it and get fuel range to Nazin instead of having to build and deploy an outpost ship. My colony ship was on the way to Rhilus and homeworld was refitting scouts with a heavy lasers and building the cruiser. On turn 22 the invasion fleet was complete and three turns later positioned at Rhilus system, ready for war. Instead of outright declaring the war on Darloks I've tried provoking it by demanding anti-missile rockets technology from them. In either case I would win something. They refused, got so angry they declared war on me and I had "justification" for moving through wormhole and taking Ras system next turn. On turn 28 Nazin fell and Darloks no longer owned anything. The battle at Nazin was straight forward, a starbase was launching missiles at the cruiser which was happy to shoot them all down. Occasionally a heavy laser would scratch the cruiser but not often enough to make significant damage. It took some time but starbase armor and structure was slowly worn down and I got to double my empire's population.

Next on my hit list were Trilarians. I've built an outpost ship and sent it to Praxis, hired commander Hawk and assigned him to the cruiser. His bonuses were not ground breaking, +5 to beam defense was not that impressive but navigation skill was actually good one. +1 to galaxy speed was nice (huge bonus considering the base value is 2) and secondary effect, no slowdown in nebula, was the best part. Both Trilar and Cryslon had a nebula in the way and being able to travel through with full speed was very useful. By the turn 39 I've established contact with Trilarians and had fleet ready in the Praxis system. I've tried again to provoke the war by demanding a technology but this time AI agreed. I got my self fusion beam but not the the war, now what? I've asked for research treaty and again they agreed. I sighed and decided to spare them for a while.

I thought about attacking Silicoids last but given the situation it was actually not bad idea to deal with them before they spread too much. I did a bit of research and development on my new colonies and then ordered a new outpost ship. Administrator Garron offered his service and I've hired him. All of his bonuses would be useful in some way, +10 diplomacy might give me some better deal with Trilarians, fame bonus would reduce the price of later leaders and megawealth (10 BC/turn) alone would justify hiring him. On turn 50 I've researched my first very own technology: research labs. The feudalism really makes researching early technologies feel like huge achievement. I've traded lab with Trilarians for hydroponic farms because they would help me a bit with food and Trilarians wouldn't live long enough to make good use of labs anyway. Few turns later Silicoids got lucky, they've uncovered a wreckage of an ancient ship and got a fusion beam technology. Then they've lended me a hand by colonizing Dendo system. Once I've made outpost in Honte system I was one system away from having a continious path to all Silicoid systems. Dendo fell on turn 63, but they were able to destroy two of my frigates so I took me some time until I attacked them again. My research was producing results and by turn 67 I had reinforced hull and automated factories and traded factories for space academy. I've built my second cruiser on turn 82, some time after researching fusion rifles so it had a bit more advanced weaponry, it sported AP NR (armor penetrating, no range dissipation) heavy laser. Too bad it was built one turn before I advanced physics field again. I've decided it was worthy to lose time refitting so I've sent it to meet with an old fleet at new outpost in Oba system. New physics technology was tachyon communications which gives an extra command point per starbase. I usually pick battle scanner for more beam accuracy but this time I figured I have good enough accuracy and bigger fleet was more important. And again I traded my new technology with Trilarians but this time for planetary missile base, an excellent planetary defense which can repel most early game fleets, including Antarans.

Fortunately Antarans were asleep whole game and by turn 92 I've mind controlled the last Silicoid colony. AP laser performed well, it was crippling starbase weaponry as it was destroying it, reducing the threat level considerably faster but it was not that great damage wise. The problem was I had mix of no-AP weapons which had to drill through armor so in the end it took almost the same amount of turns. Silicoids are awesome race for to have. They don't need food and they don't produce pollution which translates to almost quadruple industrial output. And on top of that they have higher population limit on hostile planets. Did I mention they don't eat food? Yeah they can spread like weed and bacteria combined. Once I've conquered them their former homeworld was capable of outproducing my whole empire. There should be no surprise if I tell you I made it my main shipyard.

As I was preparing for Trilarians I was concerned about missile bases. Would 20 PD lasers be enough? At the time I had enough command points for 3 cruiser so I've figured 3 times 20 should be enough. I was lazy to run the numbers but knowing how stuff works under the hood I estimated NR modifier would trick fraction rounding into effectively double PD damage, "autofire" modifier would increase actual number of shoots and "continuous" modifier would compensate for autofire accuracy penalty. While refitting the fleet my scientist have researched battle pods so I had even more firepower at my disposal and there was no worry about Trilarian defenses. Final cruiser design was 4 heavy and 9 PD lasers all with aforementioned modifiers. That's very powerful for turn 105 and there were few defensive improvements as well, tritanium armor and fusion drive I got from Trilarians while trying to provoke war. This time I just declared war after failed provocation, there was no more reason to let lone AI live. Trilar fell on turn 112 and missile base wasn't so hard, partially because the system was in nebula so their shields were not working and partially because their ships were busy bombarding my outpost at Praxis. The real battle with Trilarians happened at Kae system, they had a battleship with captain Mukirr, a destroyer with captain Altos, two frigates, a starbase, a missile base and defensive structures were shielded with class I shields. My cruisers were swift at destroying defensive structures, despite the shields, but their ships were good at evading my shots. Extra accuracy on PD lasers helped a lot, something I was scarcely aware it was there. While I was trying to land enough shoots on their titanium plates they managed to cripple and capture one of my ships. Few moments later there were fireworks, one of their ships exploded so hard that my captured cruiser got destroyed along with and Trilarian frigate. Last Trilarian system Yad was undefended and it fell one turn after Kae, concluding the game.


Well that was an interesting game. I've expected a disaster and got exhilarating roller coaster ride. I felt so powerful taking a whole race before turn 30 and defeating everybody else with lasers. Elerians are weird race to play with, as if they are playing a different game then everybody else. Rushing so early feels like cheating but that is the case in all games, not just Master of Orion. Limiting their research capabilities is actually nice touch since it balances out the fact that successful rush would double the empire and it really made me appreciate every single technology I got.

Friday, January 29, 2016

Master of Orion II: Darlok

See Master of Orion II: every race for introduction and links to games with other stock races.

Darloks, another race from original Master of Orion, are the race designed around spy stereotype. Like previous races in Master of Orion II they didn't have all stereotype related traits and had a little twist to the theme. In the original game their spies costed half the normal price, had 20 extra defensive espionage points (roughly +20% to uncover enemy spy), +30% to succeed in espoinage and 20% cheaper research in computer s field which also influenced spy effectiveness. As you can see espionage bonuses all over the place. On top of that all races had negative opinion of them because they are designed around parasitizing others.

MoO II races also don't like them either but not for espionage bonuses. In this game they have flat +20 to espionage and stealthy ships. How espionage works in MoO II is still the mystery, this old forum post explains some details but how odds are calculated is unexplained. I would assume it works similarly to the ground, combat which in turn uses the same formula as hit rolls in the space combat. So what does +20 to espionage means? Probably the same as +20 to the ground combat, 20% more chance to succeed and 20% less chance to get caught.

Stealthy ships is interesting trait that everybody avoids. It works the same as stealth field special equipment, ships are invisible on the galaxy map which makes it difficult for opponents to asses your defenses and impossible to see your attacking fleet. Unless they are omniscient, no kind of stealth can hide your ship on the main map from omniscients. One my argue that even non-omniscient AI could cheat and simply know were are your ships but I have confirmed they don't react to incoming cloaked ships. I have never actually used stealth field or stealthy ships trait and I've read somewhere that one or both of them is bugged so my experience with normal and phased cloaking device my not apply. Why people avoid this trait in custom races? It cost more then it is worth (4 picks vs omniscient which costs 3 picks), doesn't really help in combat (though my make combat easier), doesn't help economy and because of aforementioned bug.

I have played with espionage oriented custom race, it was fun and aggressive game. Almost as if playing with creative race but without the need for early game turtling. Now, I had no idea what to expect, except a lot of hate from other races. So let's begin.

After a little bit of scouting I've realized I'm in very poor neighborhood. There was no terrain or ocean planets, almost every planet was mineral poor or ultra poor and/or low gravity and Anraq, a monster guarded system, was very bad too. It was guarded by space eel and contained two planets: huge rich tundra with high gravity and medium ultra poor toxic with low gravity and gems. Tundra would be OK industry world if it had normal gravity and toxic planet was complete joke for guarded system. Gems give nice boost early on but there was simply no reason to build any building there. Fortunately I've found Vela system with huge rich high G tundra so I've settled there but sad fact was this and two more planets in home system were basically my whole empire for early and mid game.

To keep things more interesting other races introduced themselves fairly early. First ones were Elerian on 63rd turn. At first I was scared, I was weak and they could turn to annoying warmongers. On the other hand they had slow research because of government type and I was playing on a medium difficulty so they didn't have unfair bonuses. I thought for a while and traded research labs and automated factories with them. In ordinary circumstances I would withhold these two particular technologies but I figured if I was going to steal technologies I could give them a boost to get juicier ones sooner. That decision helped me to establish trade agreement so my situation was a bit less miserable. 10 turn later I've met Silicoids and 15 turns later, Humans.

Despite wet dreams of MoO fans, humans and Elerians didn't get along and unfortunately for me Elerians were on the losing end. My problem was that I was repeatedly losing contact with them, trade and research treaties would break and I'd lose desperately needed income source. To compensate and expand I've colonized a desert in Kochba system very near Elerian's homeworld. Things worked well for me for almost 100 turns, I've hired few quite pricey leaders with excellent bonuses, traded tritanium armor technology for missile bases and built some ships. Then out of the blue on turn 171 Elerians surrendered to Silicoids leaving me and Humans in a bad situation because it was only a matter of time when galaxy dividing Silicoids would decide to wage war on us.

But situation got even worse and weirder fast. Mere 6 turns later Antarans joined the party and attacked human colony making them even weaker for upcoming war. Couple of turns later giant space eel appeared to harass Silicoid's Ryoun system. It was good thing which turned bad for me but more about it later. In similar time frame I finally got enough technology to build a fleet for busting space eel at Anraq and secured gem deposits. Then Silicoids turned their ugly eye on me and declared war. My nuclear destroyers were good enough to keep them at bay so they gave up 10 turns later but again every good thing was counteracted by a bad thing and bad news. Bad news came in form of galactic council election where Silicoids alone held 8 votes of 16 total. Bad situation arised when giant space eel reproduced and sent it's equally giant offspring to my Kochba system.


I keep stressing it was a giant one because my fleet which easily destroyed normal one without loss was unable to carry enough nukes to kill this one and this one was definitely able to chase my ships down and one-shot them. Fortunately eel didn't want to destroy colonies so Kochba had lived under blockade. Around turn 220 situation improved, I've hired Tanus, a leader with good bonuses and advanced government technology and started to build bigger and more advanced ships. Humans were not so lucky, they were slowly losing to Silicoids so I decided to steal all of their technologies. It was not much but there were decent and made future stealing from Silicoids easier. To compensate I gave them technologies to defend themselves, zortium armor and missile base and accepted their plea for alliance. About the turn 250 I realized I could actually play as Darlok and help Humans by sabotaging Silicoids. Every few turns a building came down. If only I have started doing it sooner because humans became too few in numbers for upcoming election.

On turn 269 game again decided to make things more interesting by sending both Antarans and giant space hydra to me. Antaran fleet was tricky one, 4 frigates and 2 destroyers. I managed to deal with frigates but destroyers prevailed and Kochba was bombed down to 1 population unit. There were no problems with space hydra except it attacked Anraq making me pull remaining fleet far from Kochba and risk invasion there. That fateful election on turn 280 should have ended the game, Silicoids with their Elerian traitors had all the votes need to elect themselves because diminished Humans and my empire weren't big enough to make 1/3rd of total votes. When the game asked me whether I accept the ruling I chose "No" but for all intents and purposes it should count as if I have lost the game.

30 turns later I finally had what one could call a warship, a battleship with reinforced zortium, armed with antimatter torpedoes and supported with automated repair unit. About 60 turns latter I've conquered all Silicoid colonies. There were few sideshows like another Antaran attack and saving Nazin from going supernova but the game was straight forward, attack, invade, repeat.


So how was it being Darlok? Despite the game degenerating after one AI surrendered to another it was interesting but not because of my race choice. When playing other races I try to steal as much technologies as possible so Darlok espionage didn't feel fresh. Rate of tech stealing didn't seam to be significantly higher. Sabotage was somewhat better, there was an awesome moment where my spies have destroyed a star base on a planet I was about to attack on the same turn the attack happened. But most of the time saboteurs either did nothing or minimally harmed the opponent who didn't have any defensive spies and espionage technologies. It's hard to gauge the value of stealthy ships but I've noticed AI didn't attack undefended colonies when my overall fleet strength got big enough and it didn't concentrate defensive fleets when I was attacking him. Maybe it worked? All in all playing Darloks felt ordinary, as if they had no differentiating traits.

Wednesday, November 18, 2015

Casual games are bad


Casual games are not fun, they make you suffer with minimal challenges for symbolic rewards, they are not real games and that is not the problem. Every now and then I stumble upon "casual vs hardcore games" discussion. And it's usually one sided discussion where casual games are either a plague of modern world or something positive like an stepping stone toward "real" games for people who are not "hardcore".

Both sides are right in some way but they don't put enough weight on the core issue. Some discussions scratch it by mentioning a service problem in application stores: app stores on all platforms are not doing good enough job of making good apps visible. But the problem is more fundamental. If I search for note taking app with word "note", I'd probably find some decent note taking application. If I search for a strategy game, no matter how I search I'd find all sorts of games with elements of strategy but very few are that are mainly strategies and even fewer that are decent games.

The problem is in the language, in the meaning of the words. Words don't have absolute meaning, instead their meaning is relative to subjective experience. Or in simple English, two people who speak the same language and use the same words are not speaking about 100% the same thing. Many Croatian examples come to mind like "luk" which in literary language means onion but in certain region of Croatia it means garlic. English example would be a different interpretation of word "chips" between American English and British English. When it comes to "[video] game", differences between parties like age, culture and past experiences make equally big if not bigger discrepancy in understanding the term. And that's how we got a situation where '90 PC gamers refuse to call mobile and certain browser based entertainment software a "game". In fact the term "game" is stretched so thin that anything can be called and sold as a "game" and there is scarcely any way too tell what is what kind of the game.

Once upon the time genre labels were useful but over the time some games started to combine multiple genres others took only some aspects of a certain genre and we ended up with so many hybrids and games unclassifiable by any commonly recognized genre. Perhaps the best we could in this era of perpetual change is to call one game a lookalike of another. I hate phrase "Doom clone" but it conveys more informative then "first person shooter". Downside is assumption that other party knows the basis of comparison. How many people remember Doom, C&C or Mortal Kombat? Today, enough but in a few years they may become irrelevant.

I don't really know what is the best solution, game developers are taking every shortcut toward money, publishing platforms don't feel obliged to police what they serve and tried methods reliant on crowdsourcing (like letting people assign tags/lables) have not proven themselves with quality. But I'm convinced the problem is as described above. Hope this helps someone to find the solution!

Thank you for reading the post to the end, the title was a bait.

Saturday, August 29, 2015

Master of Orion II: Bulrathi

See Master of Orion II: every race for introduction and links to games with other stock races.

Next race on the list are Bulrathi. Bearlike/doglike race specialized at ground combat. In Master of Orion I they had +25 ground combat bonus which gave them big advantage when invading planets early on and 20% discount on construction and weapon technologies which could potentially make their ships more dangerous with better armor and weapons plus more space for weapons. 25% more expensive computer techs penalty on the other hand meant they had harder time building those ships due to lower robotics control level and weapons were be somewhat less accurate.

In MoO II their traits got more diverse but still centered around ground combat: "+20 ship offense", "+10 ground combat", "high gravity" and dictatorship government. Ship offense bonus is simply extra beam accuracy, not a big deal but makes beam ships efficient slightly sooner. Ground combat is also flat bonus but with more significance than ship offense. In technologically even match +10 bonus makes 20% more chance to win a roll giving the 3:2 advantage (60% vs 40%). Interestingly +10 is not the biggest racial bonus for ground combat. Maybe developers felt Bulrathi needed an edge in space combat more then all the ground combat bonuses. High gravity trait is real kicker and it makes quite a number of changes. Homeworld becomes high gravity planet and the race receives immunity to 50% penalty on to high gravity worlds. This in a weird way translates to industry bonus, thing is rich and ultra rich planets tend to have high gravity. Large and huge planets too. When ordinary races come across large rich planet, they usually have to wait until midgame for planetary gravity generator building in order to eliminate gravity penalty. High G races on the other hand can fully exploit such planets from the start. Since high G races don't really need planetary gravity generator technology they are free to choose another tech from the field, either a gravity beam (strong midgame weapon) or a tractor beam (a special weapon that reduces target's combat speed, potentially immobilizing it). Cool thing in MoO II is ground combat in space, under certain conditions ships can be boarded and either raided or captured. Raiding damages or destroys random equipment such as weapons, shields, engines, computer or special equipment. If engines get destroyed, ship's warp core "breaches" and the whole ship explodes. Capturing ships is more lucrative business, captured ships can be used against their owner or scrapped for cash and new technologies if the ship has equipment unknown to captors. In order to board a ship one has to either get close to immobile target, teleport marines or land assault shuttles on it. Not the easiest task but some techs like the aforementioned tractor beam make it more reliable. And there is one more thing with "high G" trait, it gives an extra hit point to marines so in a way it directly improves ground combat odds.

In this game I had much more luck with starting location, two systems with artifacts, one with space monster and one unguarded. Ecu, the unguarded system had three decent planets, small ultra poor terrain with artifacts, large swamp and medium desert. Doesn't sound like much but unlike random barren or radiated planets usually found in vicinity of the homeworld, those are self-sustaining climates. Early on that that helps a lot, you don't need as many freighters and you don't need to dedicate your homeworld to farming and supporting colonies. Joseki, the system guarded by space hydra had only one planet but it was almost as good as Orion, large ultra rich gaia with artifacts. Hydra has strong attack, 3 beam attacks that always hit (like mauler device) and can do up to 60 damage but unlike space eel it lacks missile defense so swarm with 10+ missile frigates can kill it, especially if it chooses to attack missiles instead of ships.

By the turn 90 I've colonized Tyrius in the middle of galaxy, made contact with all other players, Sakkra, Humans and Trilarians and got some more lucky rolls: colony leader with megawealth and random event that turned my homeworld ultra rich. At that point luck made the game too easy. Only thing stopping me from attacking space hydra and colonizing sweet Joseki world was space flux, a random event that prohibits space travel (freighters can somehow still move food around). When space flux passed I've included Joseki to my economy and along with Sakkra became a candidate for Galactic Council. For some reason Humans were upset with me voting for myself and declared war on me. I really couldn't figure out why, I wasn't spying them, we were at good terms, they were not in the alliance with Sakkra, haven't had erratic personality and I had bigger fleet. They had bad planets though, were they trying to expand over me, why not invade Trilarians? I had no problem with war, destroyers with beams (3 AF AP ND lasers, tritanium armor, class I shield, battle scanner, heavy armor) started to replace not so old missile frigates and Human's Ussika system fell quickly. After 10 turns and some espionage they gave up, gave me gyro destabilizer and asked for peace. I agreed, I wanted Humans to use their research potential to get technologies I would either trade or steal, not to fight me. Sakkra on the other hand was one I wanted to test my fleet against so I tried to provoke the war by demanding terraforming. They knew what I was armed to the teeth and gave me the technology. Reluctantly I left them alone and went back to building up my economy.


Then Humans made a wrong move, demanded tribute and declared the war when I refused. I don't know what went wrong with them, they had no economy, focused on espionage technologies and were underestimating me despite all numbers showing they had no chance to win. Oh well, my ground troops set foot on one more system, Muru and as I was about to attack Aldebaran they asked for peace. Few turns later Trilarians asked me for alliance and I accepted, curious in which trouble would it lead me to. And then the game fell apart, on turn 231 Humans surrendered to Sakkra. I was facing a boring game of either eradicating Sakkra from all planets or being elected as the leader of Galactic Council once again.

After some thought I've decided to end the game by punching Antarans in the face, I mean, with ground combat/space marines and started to work my way up the tech tree. War between Sakkra and me finally broke out, I demanded Zortium and they violently refused. I attacked and conquered Aldebaran and they launched surprise attacked on Ursa with 4 battle ships and 6 smaller ships. Nebula around Aldebaran prevented me from pulling back my attack fleet so I had to defend with spare a little fleet around my shipyards, 2 destroyers and one cruiser. It was enough to win and also to capture one of their ships by losing only the cruiser and the star base. Scrapping captured ship gave me zortium armor and I've started to rebuild even stronger defense. Few turns and one Antaran attack on Aldebaran later Sakkra ceased fire and gave me Sol system. On top of that I demanded peace with Trilarians which they refused. For the rest of the game I've tried to keep Trilarians alive but they were hopeless. I've parked my ships in Trilarian systems hoping to destroy incoming fleets but Sakkra's turn was processed before mine and attacked and bombard to oblivion my ally before I had chance to drive them off. I tried giving Trilarians technologies and money but no amount was enough to keep them safe from invasion so in ended up giving them Sol system where I've built every defense building. By the turn 300 I've stole adamantium armor from Sakkra and attacked Orion. Rewards I've got were xentorium armor, death ray, particle beam and reflection field. I hoped for damper field but no luck this time.


50 turns later with few hyper advanced upgrades I was confident enough to attack Antares. I've made some bad choices along the way, picked stealth suit over personal shield and energy absorber over megafluxers so my ships and marines were not as strong as they could have been. For a good measure I've compensated quality with quantity. Antaran ships fell quickly after being immobilized by tractor beams and raided. Only one of their cruisers survived the first turn. On the second turn whole battle was over, I lost only 3 out of 17 battle ships.


The design I ended up with was a battle ship with phasing cloack, subspace teleporter and two tractor beams and mauler devices. I haven't had space for more weapons and had to wait for 3rd hyper advanced physics to even get this much. That's why I regret not having megafluxers especially since I didn't even use energy absorbers. I could have gone with less defense, when star fortress got first opportunity to fire it has completely destroyed two of my ships so automated repair was useless and shields could have been omitted without losing too much survivability. Image above shows my ship design and Antaran's star fortress before being destroyed. Look at how much damage raiders made. Luckily security stations was destroyed early on so odds were not too bad, 90 vs 110 other equipment followed shortly but weapons where hard to dispose of. When damper field got destroyed it was an easy task to destroy the station with mauler devices. All in all I've got my taste of Bulrathi both in ground combat and space combat, I had opportunity to play with tractor beams but the game didn't last long enough for transporters to come into play. Shame the game got derailed in the middle and AI players managed to research so few technologies. I was looking forward to powered armor technology which adds one more hit point to ground troops and space marines but is in the same field as robo-miner plant - a must have midgame industrial building. Maybe it would have happened if I was willing to trade strategic technologies like planetary supercomputer and aforementioned robo-miner plant.