Rogo Darius
My projects
Startron (2020-2024)
GotK Remastered (2023)
The Game Game (2023)
Pizza Inc. (2021)
Kidding Cows (2019)
Into the Soup (2017)
Escape from the King (2016)
Crashteroids (2015)
Magic Ian (2014)
Rido (2013)
Gauntlet of the King (2011)
Rock Shock Extreme (2011)
Soup (2010)
Zone (2009)
Recre John (2007)
John (2005)
Rock Shock (2004)
- There are way more projects than this; these are just the important milestones
Rogo Darius
This is not my real name; I use an alias online to protect my identity.
I am a senior software developer working for an asset-manager/fund-investor management company in the UK. Out of the office, I am a game developer, a hobby I've pursued for over 24 years now.
About me
I have 9+ years experience of Java based fullstack enterprise development enriched with a variety of infrastructure (CI/CD) scripting, automation testing and front-end library applications.
As well as this, I have extensive knowledge in game development including best practices, performance improvement, heuristic algorithms and volumetric raytracing (accumulated over time outside of the workplace).
As well as this, I have extensive knowledge in game development including best practices, performance improvement, heuristic algorithms and volumetric raytracing (accumulated over time outside of the workplace).
My focus
I started Java at university trying to get into the C-based languages. I migrated the bulk of my personal game development attention to Java libraries like LWJGL then eventually I landed my first job developing Java based identity software where I was introduced to enterprise web development and Javascript integration (alien concepts to me at the time).
While I'd had exposure to RichFaces, an outdated Javascript library, I quickly picked up React development for use in my current job and this is where I spend most of my time coding in a professional capacity.
After realising Java game development wasn't for me as I had become accustomed to more modern shader standards and the accessibility of developing 3D games, I shifted my attention to Unity and quickly got to grips with C# for this reason. (I also like to create games with .Net Core without using Unity just for the challenge.)
I've always had a background interest in robotics and electronics so naturally I got into Arduino development. While I can't say I have too many uses these days for custom hardware like this, as my focus is mainly software, I have had various successes and even managed to win 2 competitions with some old electronics projects. I have, for example, dabbled with PWM servos, made a 9x9 3-colour LED display mounted in a coffee table that plays a primitive RPG style game with a Sega Megadrive controller, created a virtual-pet-in-a-box and prototyped an operating system for a 128x64 display.
DBP really afforded me the chance to get down to some serious programming as a teenager. If it weren't for this chance purchase at PC World when I was 12, I would perhaps not be a programmer today. I used to describe DBP as providing the power of something like C++ but with the syntax of a BASIC language, and while it served me well in the DirectX 9 era, it is fairly obsolete nowadays with the advent of Unity & Unreal.
Of course I can't be much of a React developer if I can't do web development, so naturally I've picked this up by osmosis over the years and while my eye for web design may not always be to the level of an artist, the techniques required to implement designs do not elude me. (I've used anything from pagination and lazy loading to transitions and web2.0 effects professionally and for personal projects.)
Alongside my professional development there has always been a need to have automated browser tests and while I've seen plenty of libraries and shortcuts for doing this, there is nothing like coding it yourself and having your own framework to really get control of things. I've had Selenium talking to Chrome, running a bunch of routine tests and firing off the results to TestRail each time a build comes from Jenkins in 2 different companies. (Cypress ends up taking the floor at work these days though due to other people's preferences but it's the same principle.)
I wouldn't be much of a developer if I couldn't use databases too. I've produced various scales and complexities of database integration for Java systems (predominantly JDBC and Hibernate based) and have overcome performance issues with long running or large queries/views when necessary.
Although I don't get to do a lot of it these days, I've done my fair share of continuous delivery and integration. Anything from packaging up an entire enterprise solution into an RPM for each of the 4 distributed servers it ran on to simply ensuring my own personal software releases are as painless as possible with batch scripts.
It goes without saying that I glue all of these commands and method calls together in various IDEs but predominantly I use Visual Studio, Netbeans & IntelliJ (with the occasional Notepad++ window open beside them). Eclipse used to get a mention here too, but it's been largely superceded by the others nowadays.
While I personally prefer runtimes and executables, I have of course been exposed to application server development including various configuration of Tomcat via Springboot, JBoss EAP & JBoss AS.
I can't really start the page off saying I've been making software for 24 years then say I started coding at age 12 (only 20 years ago); The Games Factory was a visual programming environment that taught me many of the core principles of content creation and game design even before learning an actual programming language 4 years later. (The Games Factory can be thought of as an amalgamation of Flash, PowerPoint and Excel.)
My approach
Hand crafting
Most things that I'll code (including the HTML for this website) are hand crafted deliberately because I learnt early on not to: take shortcuts, use templates, or copy & paste code snippets. This approach has allowed me to excel in my profession and ensure reliability in my work as well as create consistency in my APIs and user interfaces through an overarching understanding of everything involved. The more buttons I've pressed, the more I control, so the more I can rely on without being subject to issues with 3rd party libraries or flaky open source projects.
If I've written basically all of the code in a project, it'll only have as many bugs as I created; but if I pull in someone else's library, I inherit all their bugs along with it. - No thanks :)
Comment Driven Development
I am a big supporter of "Comment Driven Development" (CDD) which derives from Business Driven Development (BDD). While unholding the same principle as BDD, CDD also naturally results in documented code after the solution is fleshed out. This helps drive the need for clear business-oriented acceptance criteria as these serve as the basis for the CDD structure even before implementation, which can help to reduce technical churn and feature bloat further down the line. (See the example below)
While this example is trivial, the approach has saved me significant headaches in the past when it comes to more complicated procedures and algorithms.