Wednesday, May 11, 2016

My little monster

This story started long ago while I was still student at University of Technology in Wrocław. It was probably year 2006 but I'm not sure right now. With time passing by all previous years slowly starting blending together but well I'm already at this age where this is pardonable.

On one of C++ courses we got exercise to do program of our choice to show that we learned language. I decided that isometric game in SDL software mode will be great idea. And so I started working on it. What a great joy I had when everything finally started working together and I was able to send it to person conducting classes. I got passing marks and this was end of story. 

Well at least for a lot of project this would be truth but in this cases there is a lot more. Some time passed and with friend we decided to make casual game. Code from course project was really useful but software rendering were too slow so I switched whole stuff on OpenGL and some time later we finished "Pirate Crystal's: Adventure of Julia".

Another semester started and in advance C++ course I decided to connect physics to engine which at this point had already some basic 3D functionality. This wasn't easy because this was my first encounter with proper physics implementation. But well all of that couldn't prepare me for what came on other course conducted by Kornel Kisielewicz about shaders. I still remember his comment when he was rejecting my idea of doing normal mapping: but this is standard now. 

This may sound silly but for me this meant a lot. I was hiding in save zone avoiding shaders however I could but then I was informed that I'm far behind what happening in industry. This was crucial moment for me because I quickly get out of my save bubble, learned shaders and decided that I never want to stop learning new stuff and ending in this bubble again.

But what the hell this post is about? This is for sure not post about me but "My little monster". I sometimes hate it, sometimes need break from it sometimes I messing with it but in the end this is my "little monster" which I put a lot effort into and try to make it the best engine I can.

Why Monster ? 

People who done work on bigger projects probably know this feeling of being lost in code. In my case it often happen when I move to new part of code which I never had occasion to work on. Now imagine the same situation happening in your own code base. This is moment when you start understanding how big project you working on really is.

Other thing is that a lot of people seeing personal projects as "toys" they don't treat it seriously when you talk that you work on them. In my case I don't see difference between my personal project and projects I worked on in work. Of course code base is smaller but if you look on how much code is handled by programmer then I'm sure that I handle a lot more in my personal project.

There are also issues which you need to deal with yourselves:
  • Code paths that aren't used quickly became broken. 
  • There is issue of tools that you don't compile when I do some changes in engine.
  • Differences between GPU vendors.
  • Memory management,
  • Threading issue like: timing, race conditions.
  • Multi platform development.
  • Code which you don't even know how worked in first place.
  • Build system.
  • Building of game package (ideal if it was automatic).
  • And a lot more.
I personally don't try hack any of this or just do quick prototype. I try to make proper solution which I would also create if I needed to resolve this issue in work. And this change really a lot. 

This was really visible when I were changing work. The first time when I was doing it and mentioned my project people were like good you do something on your own but what you done in previous job. Things changed last time. When I was showing it to people that interview me they sometimes even skipped some tests and we ended talking how I done stuff or they give me their opinion how they would do something. This project was seen as one of projects that I was working on commercially and I think this was great.

Why Little Monster ? 

Well this is not name of engine because its called White Rabbit Engine. This is name that I using when I end in bed after doing some work for engine and finally realizing what kind of technology I creating. I'm scared of it complexity because sometimes I got lost in my own code. What will future bring I don't know but this project carring ten years of development, all my knowledge and well it still my "little monster". I may sometimes have enough of but but I still like what I do and will carry work on it for a little bit more :)
Greg


No comments:

Post a Comment