Since C, 64, Triple Black, Resource Management and a Game Prototype, I’ve been working on my game prototype these past few couple of days which now has morphed in its architecture as I’ve been learning about new concepts.

This weekend I’ve learnt about Scene Management. Scene management is all about targeting the subset of resources in your game that belong to the current scene. So, this means when a new scene is started, the resources associated with it will need to be loaded into memory. Those not part of the scene need to be unloaded etc.  So, there is a bit of interplay between the resource manager and the resource manager.

I didn’t have a scene manager in my prototype and its introduction into my code base meant that I needed to change how my rendering processes work. My game prototype is a bit of a mug, it’s a scratchpad of different sources of information. This is great because I’m picking and choosing things in some places that make sense to me and using those ideas. The downside is that not everything is the same from say a particular book I read. For example, I’m using the game loop from one book (Game Algorithms), the scene management from another (Thorn) and the two sources differ in how they deal with audio for example. I’m now considering implementing the Actor or game object infrastructure using a 3rd book (from which I've already used the event management ideas from). It’s fun.

Speaking of fun, I had a good time setting up my Event Manager(which I introduced in Retro sounds, Event Manager and some running) to link up the main game to the Scene Manager to the Graphics Manager. I'm finding the event management the most rewarding part of coding up the prototype. One of the great things about it is that it decouples many subsystems from each other. For example, I have components like the actors subscribe to DoLogicEvent, PositionChangedEvent and the Resource Manager subscribe to SceneChangedEvent. This is pretty cool. You just need to to subscribe to your event of choice and when it happens. Being able to use this more frequently is proving how useful the design pattern is. 

I’m also glad that I’m being a lot more conversational in my C++ and  the practice using STL quite rewarding. The new features I’ve mentioned previously like lambdas and implicit variable types is nice.

I also spent most of Sunday writing up an assignment for my Digital Forensics course. This so far has entailed understanding the incident life-cycle, insights into contemporaneous notes and basic introductions into Computer, Mobile, Image and Network forensics, among others, and what they can tell us. Quite interesting.

I must say that while I enjoyed it, the word limits are quite restrictive. I am glad that I didn’t kill myself trying to get it done though - I had started it some weeks before. Recently I’m finding that my more exotic choices i.e. modules that I’m not already familiar with i.e. non-Computer Science related, like Forensics or Psychology aren’t that easy to predict one’s efforts. I remember this one time working 2 weekends for a meager result which was both time-consuming and disappointing. That specific module was Psychology, so I’m reserving judgement.

I’ve been going to my weekly lectures (that’s really what they are – he just talks) on the C programming language and I spent the entire session coding up the course final project. It’s a noughts and crosses game. I’m not finished with it and I’m surprised at how I didn’t finish it in the class. I’m obviously not as good as I thought I was!  That said, I’ve solved it now but its not perfect which is irritating. So, I’m gaining more from this course that perhaps I thought I would.

My issues first arose from the fact that I decided to not use the concepts that I’ve yet to be introduced in the course but then I go and base the solution on a multi-dimensional array-based board – something we’ve not been taught yet. So, I’m doomed from the outset – half of it is restrictive by the above and the other is using un-restrictive ideas (what a mess?) and I’m hell-bent on using multi-dimensional arrays. I don’t mind it being tough.

I’m stuck being unable at the moment to figure out a generic algorithm to solve diagonals irrespective of the dimension of the multi-dimensional array – something that should be easy to solve but my brain hasn’t been paying much attention to sanity lately. The code is here

I also found myself in the gym yesterday (Bank holiday) as I couldn’t go on Sunday(assignment) or Saturday (lazy and meeting friend in London). So, I went out on the trot and kicked out a good session. I’m not as strong as I was but I’m OK with that. My shoulder is really improving and it feels like I could work it but I’m not quite ready yet. I took care to eat correctly because I’ve not been sleeping well recently and that’s when my body starts to fall ill. So far I’m kept it in check, eat well, rested well and that’s a good thing.

During the week, I ordered 3 new books which look fun:

  • Game Architecture and design
    • This one is actually more about the game design process than architecture. That said there is a single chapter on architecture. I started reading the theory about game design on the train back on the day I got it. It was actually really fascinating. So I’ll get back to it soon.
  • An introduction to 3D game programming
    • I’m not yet started reading this however I did thumb through it while eating a meal. It basically DirectX8 using C# so It looks pretty much a precursor to the more prevalent and more powerful Unity framework. I’m interested in seeing how the basic 3D graphics principles are put into practical application – irrespective of the language/age of the technology.
  • Game programming all in one
    • This is a wildcard. It huge however but from 2008 so I’m sure there are some useful stuff in it, notwithstanding the age. That said, I’m told that in gaming things don’t move that quickly but I’ve heard other sources say it moves faster! I’m after the concepts, however – the ones that survive the test of time.

On my investment tracker project, I’m working to improve my recently introduced feature – transactions because there are bugs that prevent it from being usable. I’ve started recording them on my Github page. This is a development work in progress so there are still some rough edges particularly error handling and site access (login and registration) is not finished. That said I’m quite happy with the overall progress of the project.

I’ve been looking into Caliburn.Micro recently to help me quickly build a WPF UI for it but this is still in the starting blocks – early phase.

I also upgraded by Fedora box from 29 to 30 which broke my tablet. For some unknown reason (something that seems to pervade this bloody tablet) it didn’t want to log into Gnome. The new version of gnome is special and one of the reasons I wanted to upgrade so that sucked. Up until this time I’d just left it – I’ve got bigger fish to fry. I don’t have a keyboard (USB) so interacting with it at in emergency rescue mode is a non-starter. So I decided to got out and buy a brand new keyboard for the tablet (sounds silly) but it enabled me to finally fix the issue.

Through some trial and error, I found that XOrg could not find libgtk-3.0-dev which sounds to me like the upgrade process made a boo-boo so I uninstalled gdm because that is what probably needed it and reinstalled it. That worked.  So, I’ve still got all my content and don’t have to start again. Why go through all this pain and torment? Good question, I guess I’m a masochist. Phew!

So, with the extra keyboard around I decided to use it more routinely and plugged into my laptop and used it to code and it was so much nicer – I loved it!  So maybe I’ll continue having a slightly odd-looking setup: A laptop and a tablet with a full-sized keyboard. Whatever works I say.

Still running – always running.