My First 2 Years as CTO for Minigame

This February, while I was still fighting to set straight the bits and bytes of Keccak for EuCrypt, a quiet note from my personal time-log popped up for a moment, as a brief reminder that it's been 2 full years since I took up this position with Minigame. And what 2 years those have been!

Before I go any further with this summary of sorts, I must say that I never coveted this position nor planned for it in any way. My initial contact with Eulora was as a player and I never wished for that to change really. Events inevitably built on one another and retrospectively one might be tempted to see any links or stages as some sort of proof of an underlying plan. While this may be convenient for some "narrative" mindset, it's still false: there was never any planning or "purpose" in sight. At each and every step there was only cause and necessity at work, shaping the outcome rather without any choice really. So do me a favour and don't ever inject into this timeline any nonsense of "goals" and don't ever try to paint it as a sort of step by step thing *towards* something. My involvement with Eulora has never been and it will never be towards something. It has always been and it will ever be coming from somewhere.

All I wanted from the beginning - I still want it - was to play Eulora, this rare game that focuses by design, explicitly and quite effectively on engaging the thinking person, on rewarding applied intelligence and knowledge. And when it became clear that part of the price for this rare want of mine1 was my own return to coding, I still hoped that I'll simply maintain and happily build my own Foxybot, nothing more. After I witnessed the feat of Chetty who turned around in a single week and working alone a stumbling, crashing server into a solid rock, my hope grew a bit larger to include the idea that I might someday work *with* her. But hopes are more often than not just fear inverted: one looks quite purposefully2 at the opposite of that which they can't yet bear to see although they know it'll come to pass one way or another, no matter how improbable it might seem. And this time it was sadly no different as I neither got to simply focus on Foxybot nor to work with Chetty at all: instead, if there was to still be any Eulora at all, I got to simply try and continue from where she had no choice but to stop.

The beginning was as it almost always tends to be: optimistically naive, regardless of all and any of previously accumulated scars that toned down an even higher level of natural optimism and naivety combined. Perhaps when I'll find myself NOT having to trim those down after a while in a new project I'll be able to say that I'm indeed as old as the hills - if I'll still be able to say anything at all at such a time. In any case, February to March 2016 were spent making small fixes to various issues of the server and getting to know the full code base. April to July 2016 included the first big pain: porting the full code (client and server) to 64 bits; in addition but nowhere nearly as painful and horrible as that transition, there were of course a set of new features added and the first forays into the gnarly part of graphics for Eulora. This part concluded with a smooth new client release in July/August 2016, packed with new stuff, some of which was set out explicitly in the corresponding S.MG statement and some of which was only hinted at, so as to avoid spoiling it all for players.

Buoyed by having reached at least the end of the 32 bits to 64 bits migration swamp (it felt like hell at the time but retrospectively it was of course just a minor puddle of a swamp, there was and surely is worse to come), everything seemed suddenly within reach in the summer of 2016: the practically infinite landscape, the migration to RSA-based authentication, the graphics market place and with it the final client release that could be afterwards seamlessly updated as and when the server made new content available. The initial required sever-side refactoring proceeded satisfactorily if painfully. And then of course the optimism died many a slow and tortuous death over the remaining months of 2016 and pretty much all of 2017.

First, the rot of the open source legacy code turned out to be so entrenched that it resisted any and all attempts at sanity with effects more and more pronounced as one tried to build more and more useful and sane parts - the partial refactoring turned quickly into an almost entire re-write, all while the server was up and running, literally changing the engine of the car while driving it and with passengers on board as well, for good measure3. When this second code-hell was over in September 20174 there was as a result one big but smooth server update that packed a lot in, with the most visible changes being: the ECu (Eulora's currency) floated 10:1, new merchant interface, separate storages of the 2 NPCs, unlimited stacking of items, fixed and server-chosen characters for new players, metered traffic, tighter server-side controls of player movement and various fixes of edge cases in the game.

Once the code base was brought not to full sanity but to a much more reasonable state, there was of course finally, belatedly, time to focus again on switching to RSA authentication, making the client-server communication protocol and then the practically infinite landscape and so on. But as before, reality turned out to be an uglier beast than it had initially seen: there was in fact no usable RSA and no usable cryptographic layer at all on which to rely for Eulora's needs. So I worked on making it of course, what else was there to do.

In October 2017 I switched thus from code-refactoring and cleaning to a mixed pack of study (inevitably, Maths and crypto such as it is featured strongly), code understanding (the insane mpi comes first to mind, mainly due to its dubious habits of sweeping dirt under the carpet), Ada and V learning and practice, code design, writing, testing and weekly5 write-ups that effectively grew into EuCrypt, the cryptographic library for Eulora. As much as possible and in parallel to all of this, work continued as well, of course, on the rest of parts yet to be completed: the communication protocol, the major change of database design and so on. I completed the EuCrypt series of write-ups at the beginning of this month and then of course, I added a new check to it following useful feedback from Arjen. And while writing the EuCrypt was no walk in the park, I must say that I wouldn't call it any sort of hell either for hard work and even relentless struggle in themselves are no hell - they may be tiresome and even wearisome and all that but they simply lack the vomit-inducing moments and mental tortures of previous experiences with the legacy code base.

There is of course more to do and more to come, now that EuCrypt is completed and it starts being put to use. But the results of all the toil of those past 2 years go beyond the updates and the new features and the library itself: there is now a much healthier base to build on, there is now effectively a way to build all those exciting things that make Eulora the game I wanted 2 years ago, the game I still want. And for all my current fatigue6 and for all the current woe of being at the moment without an actual machine on which to run Eulora's server, I'm looking forward to the work that is still yet to come for it is finally the moment to focus again on the most exciting parts - the ones where Eulora begins to truly take off!


  1. My wants are both rare and of the sort that money alone can never buy on the spot - go ahead, buy me with all the money in the world a working Eulora right now, will you? I'm neither boasting nor complaining; I'm merely stating, mainly for my own repeated recollection, this not-yet-ever-contradicted own experience. 

  2. If, perhaps, subconsciously, if one never ever looked into oneself enough to notice this sort of subterfuges. 

  3. between January and September 2017 alone, the code base went from 330k LOC to 264k LOC where the resulting 264k LOC actually included a lot of comments and tests and re-implementation of a saner nature of the useful parts 

  4. As the saying goes: if you find yourself in hell, just keep going until it's over. Can't say I have any better suggestion really. 

  5. By weekly I really mean weekly: New Year or no New Year, if it's a Thursday then there is a new EuCrypt post. 

  6. Fatigue that even became so acute as to result those last few days in what I call mind-blank-mistakes: the point where the mind blinks occasionally as it were, missing things that it would never miss under any other circumstances; these include the physical bumping into corners/objects because of mis-estimating them and the logical - missing obvious mistakes in one's own code. And no, I still don't call this extreme fatigue because I know unfortunately further levels of that too - it comes with various territories and natures. 

6 Responses to “My First 2 Years as CTO for Minigame”

  1. Adlai says:

    Congratulations. Keep up the weekly goodly works!

    I fear someday I may be one of your players, too...

  2. Adlai says:

    Congratulations! Keep up the goodly weekly works.

    I fear someday I may be one of your players, too...

  3. Diana Coman says:

    Why fear?

  4. […] am luat recent o mica pauza de la multe mai mari si mai marunte, am fost putin prin Ploiestiul natal si apoi inca mai departe, pe coclauri, ba chiar si pe acolo pe […]

  5. [...] Interesting to note Diana’s remark that the beginning always seems to be optimistically naive despite scars accumulated over a lifetime. I won’t say that my optimism in general is not tempered at least a little through experience, but I think this is more related to a caution with respect to time frames of project completion, and the realization that it is not possible to be productive 24⁄7, like cramming before a test in school. However, I wonder if making progress is impossible without this optimism, no matter how ‘misguided’. [...]

Leave a Reply