Being enrolled in a Japanese language course at university most of my time went into that this past year. After a while I really miss programming however, so during the winter holiday (well… study period) and summer holiday I spent a month working on 2 small projects, which I’ll likely polish and put on my portfolio at a later date.
Here’s a quick look at both:
Winter 2015 (~January 2016): Render Framework in OpenGL / C++ / SDL
In school I learned some DirectX and we built upon a ready-made framework our teachers gave us. I wanted to recreate this from scratch because I couldn’t share projects like my grass shader before because the “engine” wasn’t entirely written by me and used parts from my teachers. I decided to learn OpenGL because initially it looked easier to do some things compared to DirectX, and learning something new (and getting it to work) is always fun.
In one month I made a basic renderer with shader support (diffuse, texture, lighting) and custom math classes, all of the core rendering components are there and I tried to make everything easy to use and read, something coming in handy when writing this blogpost 7 months later. It was a great experience to learn OpenGL thanks to good documentation, handy TheBennyBox videos and SDL which makes input/output really easy.
Part of me wants to continue adding additional things like shadow maps and screen space reflections but part of me also doesn’t know if it’s interesting enough, with games nowadays moving onto PBR/GI and raytracing for things like shadows and reflections, I feel like I’m working with outdated technology. I think come another holiday I’m going to look up a PBR implementation tutorial and start from scratch learning about that, maybe in DirectX.
Summer 2016 (July 2016): RPG battle system in C# using Unity
In July of this year I made a battle system similar to active time based-battle systems in earlier Final Fantasy games. I wanted to have a Unity RPG related project up on my portfolio and my other Unity work used the obsolete UI framework and Unity libraries, so now was as good a time as any to create something small in under one month that had some RPG elements and where I learned Unity’s new UI/2D system.
What I have in one month is a core working combat loop with enemies, party members, ATB gauges, attacks, victory and defeat. RPGs are difficult to code because they require a lot of coding for little to no visual pay-off and projects can get big and messy/unmanageable. I tried rewriting some parts a lot, and have classes for managers, state machines and overall tried to make everything simple, accessible but not too closed or constrained.
I’m really glad about this project because back when I learned C++ in university I made Final Fantasy I but looking back at it, it wasn’t that feature-packed and had a lot of sloppy code in it to meet my deadline (and because I was still learning). What I made in Unity now feels much better, with the only flaw being that it’s just one battle and there’s little joy to playing it until I add a world, items, equipment and leveling/tougher enemies to it.
When it’s a little bit more feature-packed, I want to put this on my portfolio open-source. When time allows it I’d like to add a Persona 3-like dungeon where the player need to clear a generated dungeon, find the staircase and move up one level, with enemies becoming more tougher each floor and having the player manage their party and spend skill points to become better, while learning more about the story as you progress each few floors.
Wrap-up & Current Life
Doing these projects was fun, but I feel I lack modern graphics knowledge of things like AA techniques, raytracing, PBR and other new techniques. Part of me is hoping that I could study a game development course in Japan and learn some new things while seeing all the Japanese terminology for it, because I’m not sure how far I can get by studying things in my own.
I had been playing with the idea of smaller and more frequent programming and Japanese grammar blog posts, but it felt weird and a little egocentric to do when I’m not employed and still a Japanese student, and while some of these things are written about on other blogs too. I have, however, started a Japanese blog to document shows I’m watching, interesting Japanese observations and maybe some grammar down the road, as I feel some things get lost on social media and in my screenshots folder, and I needed a place to summarize these things to maybe later easily look back on.
Looking at my Japanese, I learned so much more that I would never have learned when I continue to study the language on my own, and I’m really grateful for that. Not a day passes that I don’t miss it ever since going there last September, and I really can’t wait to learn more and hopefully one day combine both the spoken language as a programming language in a job. Onwards to the second year, and hopefully more programming holidays!