This week was all about the technical groundwork to get the server running on a dedicated machine and validating input from the client. Let us know if you want to know more technical details in our dev logs or if you’re just interested in the game itself :)
My work on getting Prosperous Universe deployed on actual servers continued. After getting the basics done last week, this week my focus lay on getting development and production environments as similar as possible to reduce “works for me” scenarios in which bugs only occur in production environments but not on local development installations. Using a technology called Docker, this was relatively easy to achieve and I have found feasible workflows for both server and client development.
I then went on to work on the corresponding Continues Integration/Continuous Deployment setups. Ideally, a single code change of a developer would immediately cause a rebuild of the code base, an automated test run and - in case of testing/staging environments - automated deployment to web-accessible servers for manual testing. This proved to be a lot trickier than I anticipated and will probably keep me busy well into next week.
Finally I was able to finish my work on the chat system - for now :) I added a counter that displays the amount of unread messages next to a channels name, as well as in the list of conversations. The next features in the chat system are all mostly client based so I decided to stop at this point because Martin and I planned a big code consolidation week in two weeks and if my branch differs too much from his a lot of the work has to be redone or at least evaluated if it still works.
I spent the second part of the week on the validation of client messages. That means that the server checks whether the messages the client (aka browser) sends are valid so that no unexpected things happen. We already had a bit of validation implemented but it was time to improve that. The client sends JSON messages to the server and the server parses them via GSON into Java objects. So I decided that the validation should be on the Java side of things. JSON schema would have been an option as well but looked too cumbersome. Now we have a nice validating filter in the message input chain that works well.