Following is a writeup of current work to simplify the DRTS online game server by migrating the implementation to a single Elm app.
This week, I migrated the client-side part of the DRTS game implementation from Elm 0.18 to Elm 0.19. On the server side, only the core game mechanics had been coded in Elm so far, as those need to be consistent with the client implementation. Other server parts, like the exchange of text messages between players, were not implemented in Elm but C#, closer to the hosting .NET core app. The version still running in production instantiates an Elm app for each online game, and when that game is over, the server removes that Elm app too.
To reduce development and operation expenses, the server design will be simplified to use a single Elm app, processing all games and other activities like chatting. This makes development easier, for example for features like matchmaking and player profiles.
What priorities in Kalmit result from this application? What functionality needs to be added on the Kalmit side to support this use-case and make for a pleasant experience? Since the server now becomes a single Elm app, it looks like I can cover automated tests mostly with elm-test, so reaching for Kalmit seems not necessary for this part. For manual testing though, it would be nice to support quickly starting a new server instance after a change in the source code. How could this work? Following is a course idea, after skimming over the current implementation of DRTS, before starting with the implementation to support this scenario:
elm-app.map.json
for the server app or replace it by a convention for naming the entry points. I have not yet looked into the implementation of the serializer code generation, the effort needed there is unknown to me. I prefer to not block DRTS on this and instead manually supply those functions for now.map.json
to include in the web app config, assuming a convention for the path in which the CLI tool places the compiled client HTML document static file.I am updating the backlog to include the essential items identified above. Not including the optional ones for now, as I am not even sure if I will miss those for the current iteration of DRTS.