My goals for this week were to start a basic server-client infrastructure along with game tick mechanics. I also wanted to support the integration of the infrastructure with the simple graphics test and input detection made by my teammates. I also had some plans to build the group website to look more modern and like an actual final site with just the contents needed to be filled in.
This week I accomplished making basic client and server main codes along with prototyping a simple client input sent-to-server that got improved upon by my groupmates later during the week. I also implemented a basic prototype of the game tick system that lets the server send the updated game states to the client every tick, both sides using threads and locks to make sure they're done live without blocking. I also helped my group further by debugging or flagging some bugs in the codes, along with contributing to designing the core game system loop.
Firstly, the week went differently in a very positive way as I definitely didn't expect our group to be able to get so much of the plain server-client of a box moving around working by the end of just week 2 (a sample spec mentioned that they were only able to do this by week 3). I think this is because everyone in the group is so diligent and happy to work, constantly fixing or implementing new features over the week! Meanwhile, some parts also went differently in a negative way: my group's feedback that it can be delayed and not crucial to the project, along with.some extra homework I didn't expect from my other classes mean I don't have the extra time to work on decorating and implementing the website yet. I agree with my teammates though that this isn't a high priority task, and thus I spent what extra time I had debugging or helping my team more instead. But overall, the other goals I had this week were accomplished and then some.
Next week, I would like to make sure all the edge cases of the basic networking infrastructure are covered, help with implementing mouse input to camera control, implement basic in-game tasks (player closeness detection and basic press-to-complete mechanism), assists my teammate for the basic physics engine, and finally working on the website if time allows.
This week I learned about server-client TCP socket handshakes and communication in a bit more low-level form compared to what I usually know in Go; I didn't expect this at all because I thought that the C++ version would be completely the same. Furthermore, I also got reminded of TCP basics such as the need to read in a while loop since packages might be dropped, and I also got reminded of CSE 120 concepts of threads and locks because these are needed compared to the ease in Go using goroutines and channels; I fully expected to learn this as I already expected that some concepts from my previous classes would be used here too. I also learned the power of getting together as a group and working on the project at the same time and the same place as it allowed so many quick decision makings to be done, and as a result more work can be finished in a shorter amount of time; I didn't expect this and I'm happy that I learned about this.
My individual morale is really good, since again we're finishing more tasks than I initially expected. All of my time spent doing work for the project was really fun, and I'm looking to contribute even more next week.