So, it’s been four months since the last post and now feels like a good time for a new one.
Firstly, a little update about the open source game engine that I started back in February. It’s been progressing nicely in terms of its capabilities and stability, with features such as font rendering, live texture updates, gamepad support and vastly improved content loading being the main areas of improvement.
However, during this time I’ve also been actively looking for work in the software industry since ending self-employment as an independent game developer. It’s not going as well as I’d like and while it has been tempting to just give up, that’s definitely not an option either.
Instead, I’ve been continuing to improve my skills and experience in using ASP.NET, SQL and Javascript (JS). I’ve also recently picked up Typescript (TS) and jumped into the deep end by moving all of this site’s JS code to TS, which forced me (in a good way) to learn how it's all setup and configured.
XML to Markdown
Another side-project I've been working on is an Visual Studio XML documentation to Markdown converter, or "VsXmlDoc2Markdown" for short. Part of the reason I started the project was to generate documentation for the previously mentioned open-source game engine, while also using it as another means of practicing tool/utility development.
It's only a small, work-in-progress project, but if you're interested, take a look!
Screeps
Now, you’re probably wondering what the heck is Screeps?
It’s a web-based programming massively-multiplayer online (MMO) game, which I’ve been using as a secondary method of learning JS and TS. The purpose of the game is to use everything Javascript has to offer, to create an AI which can harvest resources, construct a base, defend itself and attack the AIs of other players in a massive online world split into rooms, or sectors. This means once your AI is running, you don’t actually need to be present for it to continue doing what you programmed it to do.
It’s a really fun (and intense) way of learning Javascript. It supports the use of external IDEs and there is also a Typescript start kit which provides all of the typings and configuration you would need to write your AI in TS, compile it into JS and automatically push it to the game server. It’s definitely worth checking out
Today I open-sourced my game engine, Molten, which started out as a side-project to get back in to game development. My long-term goal is to produce a game with it (obviously!), but in the near-term I'll be spending a some spare time developing it's major systems, such as the renderer, input, audio and content management.
In the past I've used MonoGame, XNA and Unity3D to produce a game but never felt quite satisfied with the fact that I didn't actually create the framework or foundation myself, as well as feeling frustrated at times by the limitations of third-party frameworks. However, with greater control comes greater responsibility and complexity, so in order to limit this madness somewhat, I intend to use third-party wrappers/frameworks such as SharpDX, OpenTK, OpenGL4NET, JSON.NET and whatever else may be needed further down the line.
While this may sound like a classic case of reinventing the wheel, I intend to treat it more as a learning experience in the short to mid-term, with high ambitions of actually producing at least one game with it in the long-term. Whether those ambitions are reached remains to be seen. Who knows. Something entirely unexpected might come from this endeavour!
P.S I also need to add imagine upload support to this damned post editor!
Hello again!
A not-so-small piece of my free time this week went into further-improving security of the site by adding SSL and fixing a few remaining holes in various validation checks. Along with that I had the time to add Disqus comments to the blog in an effort to improve interaction with current and future readers.
I still have a lot I would like to do to the blog simply for the learning experience, such as:
I also intend to use this as a place to post about any side projects I may be working on in my spare time, so things will hopefully get more interesting in the near-future!
Over the past two weeks I've been tweaking and fixing various things to ensure this site is running as smoothly as possible on it's current Azure configuration. Getting a mini-CMS working is one thing, but making it run in a secure and optimised manner is another thing entirely!
The main addition this time around was the ability to edit and reorder my portfolio work projects on the main page. Previously I could only add and remove them. The entire banner image upload system tied to it is new territory for me, having not previously used AngularJS until now. There are still improvements I need to make in this area, but for the most part it now functions as I originally intended.
There are still a lot of things I want to improve in the near future, such as the ability to add images to posts, import/export the blog and replace the CKEditor (A html rich-text editor) with my own implementation to allow me to gain more experience with ASP.NET and all the related tools/frameworks.
In the meantime, watch this space!
It's taken about one month of self-teaching ASP.NET to build this portfolio website from scratch. Now you're probably wondering why the heck I would want to build such a thing myself instead of using a CMS such as Umbraco, Joomla or WordPress. The answer is simple: I wanted to do it for the experience. I wanted to know how it all works under the hood. I believe once you understand the inner workings of a system or architecture, working with, or building similar projects or systems becomes so much easier.
This was probably the hardest week of all, where the temptation to jump to a pre-made CMS was at its peak. I was heavily considering WordPress on PHP because it is what I was most familar with. What stopped me, as cheesy as it sounds, is the number of ASP.NET roles out there right now. If ever I was to expand my skillset away from independent game development, now was the time to start learning!
Most of the first week was spent reading up on ASP.NET tutorials. I started out with a plain, non-MVC based portfolio which worked pretty well but ended up a complete mess on the code side, as you would expect with a first attempt at something you've never done before.
I had always managed to dodge working directly with MVC as a game developer. However, there was no escaping it this time around. I had seen that MVC can make life a lot easier when building a web-app under ASP.NET. Amazingly, it only took about 6 hours before I had learnt enough to have my first working (albeit basic) web-app version of my portfolio running. It was still a mess, but it felt great to make so much progress during this week!
The portfolio site structure was pretty much finished, I had a spot prepared for my CV, contact and blog pages. Then came the part of actually building the blog system. I felt like a complete newbie again, but not for long. It took about two days to get to grips with the identity system (Microsoft's fancy login/user management framework) and produce a basic login system. Was it secure? nope, not yet anyway.
By this point in development, the website was mostly finished. I was able to login, make blog posts (with formatting!) and add, remove and re-order project banners on the main page via a small back-end system. It feels like a tiny CMS. Much of the fourth week was spent adding the finishing touches to the layout and ensuring it functioned as expected from a responsive layout. I also felt like a pro with Bootstrap at this point, but there's no doubt that I still have a lot to learn about it.
I decided to run the whole stretch and try my luck with Azure. I spent another eight hours figuring out everything needed to host a small portfolio via the Azure dashboard. It's surprising how simple it actually is. Kudos to Microsoft for making an otherwise complicated task seem like a walk in the park. Everything in the Azure dashboard is organised in a meaningful, self-describing structure.
Having achieved a fully working portfolio website with its own miniature back-end system, I feel like I've built a great foundation to further-extend my knowledge of ASP.NET and MVC. While there were a few frustrating points a long the way, I enjoyed the project greatly. The best part is, I have something to show for it!
I hope you like my portfolio site and if you would like to get in touch, contact me!