I have been into programming since I was 7 years old, and one of my main points of interest has always been videogames. All of my game development experience has been amateur and mostly on my own. However, I hope to professionally or semi-professionally develop and publish videogames at some point in my life. I have performed videogame development on languages and platforms ranging from Qbasic to C# (with XNA), going through Java, Bennu or Godot (and others).
My mathematical and academic facet have mixed together with my gamer and game developer interests and this has produced a great number of ideas with regards to game development and game mechanics. I have recently started writing down some of these, due to this writing down of generic notes and ideas taking a much smaller amount of time than developing them in an actual videogame.
One of the aspects which have obsessed me the most when thinking about developing videogames and about how the videogames that I have played could have been better is achieving a true feeling of endlessness in a videogame. I have written down some ideas, including a pretty thoroughly described computability-based system for creating endless videogame systems here.
Another of my obsessions during most of my time developing videogames is the development of robust systems that allow complex and modular gameplay interactions in a fun way. The result of this is what I call effect-based programming, a generalization of techniques found commonly in many videogame systems, which is general enough to straightforwardly be able to represent any of the complex mechanic interactions of very different games such as Warframe, Hearthstone, Dota, Diablo or Magic The Gathering: Arena. While I have no piece of writing on this topic right now, I have several implemented versions of this in partially developed projects. From the projects described below, Runeword contains the closest to my current iteration of this system, even if my current iteration is more general.
In fact, this system is so general that I see it as a generic approach to programming, much at the level of object-oriented programming or functional programming (although, as it tends to happen, not totally separate from those). Future projects include specifying this in a more theoretical setting, investigating the software engineering landscape and considering writing a programming language centred around this idea. My PhD second supervisor, Perdita Stevens, does research on software engineering, and initial basic conversations with her seem to have made her optimistic about the potential of this, which reinforces my will to at some point spend time developing these ideas.
I am not the only one that loves thinking about this. At some point I gave an informal talk about this at my university. Personally, I am heavily inclined to gameplay-oriented complex games with long progression, hard to master and preferably a decent level of skill-based difficulty. Stories are not my favourite thing of videogames. But I have learned to understand the different perspectives on these topics, and definitely thinking and discussing about this can be great.
From the innumerable attempts, only started and small games I have developed, here are some of the ones I advanced the most.
Runeword is an unfinished game which I created for a videogame subject at university, even though the idea had been on my mind a long time before that. It is implemented using Microsoft XNA. Even though I will not finish the current version of this game, I plan to some day reimplement it in a better platform and finish it with a lot more content and mechanics. Runeword features a spell/skill launching system based on drawing "runes" on the screen which indicate which spell to launch. It also features what I call an "effects system" which offers a generic interface for implementing all kinds of effects with interactions, synergies and countereffects maintaining modularity and locality in the code and in the behaviour. Other features which I would like to include (and for which I have specific design ideas and sketches) once I get to redo it would be:
Make it a multiplayer open world game.
Use the generic AI engine to implement complex and learning AIs
Include item management, with a random drop system.
Make most aspects of the game random generated and virtually infinite (not predefined), including:
Items and item properties
Maps
Monster properties
Spells
Monster AI
Include other forms of uncommon spell launching systems, such as:
"Singing" the spells via voice detection.
Periodically rotating spell availability bars, in such a way that timing becomes an essential part of spell casting.
Indirect spell casting, via casting smaller spells which, when combined, form the bigger spells.
Interaction with random generated elements on the screen. For example, the game throwing out symbols at random positions of the screen with timers and casting spells by selecting or combining them in the useful ways.
The Sourceforge project for Runeword can be found here.Â
Total Fighter is an unfinished fighting game with a different approach to the usual combo-based one seen in most fighting games. Total Fighter's engine is based upon the concepts of position, movements between positions and orders which trigger these movements, which offer a very wide generalisation of combos and special abilities featured in the typical fighting game. As such, most of the basic aspects of fighting games can be implemented through Total Fighter's configuration. Examples of this are character movement, hit effects (for instance, knockbacks), jumping and state changes, as it is shown in the video. On the other hand, it allows for much more complex interactions, such as counter-attacks, no-return risky movements (once the player executes the movement, he cannot take it back until it finishes or is interrupted by something), virtually infinite combos (which can, however, be interrupted by the enemy) and combinations of all of these elements into something even more complex. I consider the basic engine for the game finished for the time being. However, there are plenty of things to implement before considering it an actual game, starting at a good selection of balanced fighters, AI, the specific game modes, ranks and statistics and a fighter editor for anyone to create their own fighters.
The Sourceforge project for Total Fighter can be found here.
Ten Worlds is a previous attempt at a similar game to Runeword. I developed it when I was 16 years old, and it had much more content developed, but however had very serious design flaws, both in the gameplay and in the code, and therefore had to interrupt its development. Ten Worlds is developed using Bennu, a quite underground and amateur language from the DIV Games Studio and Fenix family designed specifically for developing video games.
You can download Ten Worlds from Google Drive here.
When one plays videogames long enough, and gets involved with them long enough, the line between playing and developing becomes blurred. This is particularly true when getting into topics such as game modding, mapping, tool development and event organizing; all of which I have done at some point or another. You can read more about this on the page about gaming .