Tuesday, November 10, 2020

Dino Mario

What is This?
An early version of a modern game inspired by old-school Mario Brothers.


Download link


My rambling on what it's about...
We're bombarded with amazing visuals -- the games thrown at us with the new generation of consoles boast visuals that don't only impress us, they try to blow us away. But there are only so many times we can be blown away.


I used to part of that "let's make the most flashy and hyper-realistic graphics imaginable" crowd. At one stage it was a point of pride. But these days every game is like that. The democratization of game engines has done away with any efforts we individuals might have done to distinguish ourselves.


It has become too much for me. Nowadays nostalgia does it for me. And artistry. I have seen enough. My brain has exploded too many times. Let's go back to basics. I may not be a renowned artist, but what I can do... what I can do is to make something that calls back to my childhood. And to hopefully stir memories of others who recall those days.


Let's try to capture that early Mario vibe! With a little dinosaur twist.





I just want something simple. Something to remind me of the old days. I liked Mario Brothers. I decided to make a game that had the same gameplay as old-school Mario Bros.





This is what I made... it's a cute little velociraptor trying to make sense of his world. It's simple, it's cute, and it won't try to make your brain explode.

Sunday, October 25, 2020

Tales of the Old Earth

I've been taking a break from Bleaktide (my main project) because I was a bit burnt out on it. I needed some space to get a fresh perspective and focus.

Anyway, to keep myself busy I resurrected a Mario style platformer I was tinkering with last year to give myself something to work on while I recuperate.

It has been nice to work on something simple and creative just to give myself a break. I've made some decent progress and am pretty far in already. I have 4 scenario types (backgrounds and enemy sets), 9 levels and 2 boss fights.

I only have a video of the first level available right now, but will try to upload more soon. Here is level 1...



Sunday, September 27, 2020

Legacy Projects: Real-time Strategy

Yesterday I decided to post some vids of old projects that I've not posted about or which I never posted videos of. Today I'm dumping a few vids of RTS projects I've tinkered with.

They all use my RTS framework 'Warsmith', which I've been working on for many years. My old project Zyrtuul was where the framework originated. There are 4 prototype games that use the framework. My main focus has always been the framework itself, with the game prototypes being just a side effect.

















Saturday, September 26, 2020

Legacy Projects: Araxxis Squadron

Because I'm a lazy blogger much of my past work was not posted, or was posted with only static screenshots and not videos. So I'm uploading some video content of old content just for fun.

This particular set is for a game called Araxxis Squadron, which I think goes back to early 2017 (maybe even 2016?). It's a crazy frantic arcade style space shooter. I actually still like this game, though it's a bit over the top and intense diving in for the first time. I think it was one of the things where as a dev you get used to it, but as a new player (or as me coming back to it) it is quite overwhelming.

Anyway, here are some videos...









Monday, June 15, 2020

Bleaktide Dev Build 1

Bleaktide dev build 1 'Embryonic' available for download.
Download rar



Limitations
- 3 dungeons available, partially done.
- Only 1 to 2 abilities per class.
- Multiplayer disabled.
- Wailing Ghast class not yet playable.



Notes
- 6 classes ready to play. Any you think are nice or crap?
- Try graphics options. Let me know what you like.
- Frame-rate counter is at bottom left. Does it run okay?
- How are the abilities?
- Check out the slot machine.
- Check out the potion cauldron.





Wednesday, May 20, 2020

Bleaktide Part 5: Gameplay Features

Note that this is part 5 of a series. In this installment I ramble on about miscellaneous gameplay features.

In this post I'll showcase a few gameplay features currently present or in progress. The screenshots are too large to fit at full size, so click them to view the full-size versions.


Dev World

Because the actual game worlds are quite large and filled with so many objects, loading them takes a while. It's not that long but when you're trying to repeatedly tweak new features you want to able to iterate quickly.

To cater for this I have a separate development world with a very basic background, containing a collection of game objects that I can enable or disable as needed. Similar scenes exist for testing game characters, abilities and gear in isolation, but 'dev world' is the one where I spend most of my time.


This is my 'dev world'. Currently it has the potion cauldron, some lore books, the slot machine, some ingredient plants, treasures chests, livestock animals and town guards enabled. Usually I only enable whatever I'm working on at the time, but I enabled a fair bit here just to demonstrate.



Slot Machine

Occasionally I'll lose focus and get side-tracked on some spur of the moment wild idea that doesn't really contribute to the core game. Although I kick myself for spending so much time getting side-tracked I do think that these arbitrary features end up being interesting mini-games that add character and flavor to the game.

The slot machine was one of these. I spent about 3 or 4 evenings implementing it (it took longer than initially anticipated). The slot machine allows you to spend gold for a chance of winning gear and items.







Unlike your typical slot machine game I actually modelled and simulated the individual reels, like an old-school physical slot machine. It's bright and flashy and sort-of at odds with the grim theme of the game, but that's part of it's charm.



Initially I only provided the UI at the bottom to interact with it, but when my wife played it she kept trying to interact with the coin slot and handle directly, so I made those interactive as well. It gives it a more tangible feel.


Part of what I like about my theme is that it combines dark and gritty with silly and comical. You'll be walking through an ominous graveyard and then come across a dancing skeleton who gets a fright when he sees you. After leaving the graveyard you might stumble upon this bright flashing slot machine. It admittedly feels a bit incongruous but it does add a strange and unusual feel to it all.



You win rewards if you get 2 or 3 matches. The rewards are dependent on the icons matched. For example here there are 2 gold pouch matches, so the rewards are gold / treasure related. You can insert up to 3 coins, with more coins giving you more rewards.



Reagent Harvesting

Reagents are ingredients that you harvest from certain plants that allow you to craft potions. To help you differentiate between reagent plants and general background plants, the ones that can be harvested are made more prominent using particle effects and lighting. Once you harvest them the special effects are disabled, making them blend into the background like ordinary plants.


The Crypt Lord has stumbled upon a wood fungus plant, which will allow him to harvest wood fungus to use at the potion cauldron later.


Organ Harvesting Area

The organ harvesting area isn't an area where you actually harvest organs (I thought that would be a bit too disturbing, although I'm still open to the idea). It is a quest area where women and girls from the town have been captured. You need to discover what happened to them. You find them in cages and will eventually need to rescue them. Right now I've not actually implemented that part, so it feels quite gloomy because you see them and hear them crying but can't do anything about it.

The black market merchant you interact with in the town trades in organs, so it makes you wonder whether he is involved in this.


The organ harvest area has women and girls trapped in cages, with tables containing various body parts nearby, hinting at their eventual fate. I put in a fair bit of detail though you can't see it here. There are food plates and urine buckets near the cages. I put in a lot of effort creating the haunting ambient sound effects of women weeping and pleading in despair.


Potion Cauldron

The potion cauldron is where you craft potions using reagents you have collected. I have tried to make it very simple to use, while also trying to give it a tangible feel (as if you are actually interacting with a cauldron). It actually shows the ingredients dropping in and plays a rewarding sizzling sound and fancy liquid splash particle effects.


In my initial pass you can only craft rare, special potions. These are quite valuable (whereas the ingredients you use to craft them aren't worth much by themselves), making it worth exploring this feature. However, in retrospect I think it may be a good idea to allow the player to craft simple health and mana potions too.


Rune Forge Area

The rune forge area is not actually implemented yet, but it will be where you can use mined items (items like ore and crystals) to craft 'runes', which can be slotted onto armor and weapons to make them more powerful.

It's still a bit unclear to me exactly how this feature will work so I can't say much more about it right now. Hopefully it'll be splendid!


The Crypt Lord standing outside the Rune Forge Area, wondering why the hell he can't actually do anything here yet. I provide several shadow quality options with the high quality options having most world lights flicker and cast shadows. The Rune Forge Area showcases this quite nicely.



Lore Books

Lore books are one of the ways in which I expound upon the lore and history of the world. They are typically present near dungeon entrances to give some background information. Occasionally they are also present deep inside dungeons, telling stories about heroes and villains you'll encounter later.

An old friend, Matt Penney, offered to provide some voice acting, and I took up his offer for one of the lore books. I'm very happy with the results and am hoping he'll be amenable to providing more. Here is a link to the sample:



This rhino fella is standing next to a lore book.



Arcane Stones

These mysterious artifacts serve a purpose that not even I know yet. They'll probably give you some boon or buff. The reason I'm still undecided on what to do with them is that you already have so many skills, abilities, brews and potions that give you buffs. Yet another buff-giving item feels inconsequential, so I'm still mulling over it.



What the heck does this thing even do? Not even I know.



Abilities

I've divided character abilities into a set of shared abilities and class-specific abilities.

Shared abilities are things like 'dash' (which allows you to sprint for a while and navigate through the world more quickly) and 'illuminate' (which summons an orb of light to illuminate dark areas).

Class-specific abilities are obviously thematically related to the specific character. I've only got about one or two per class at the moment, and some of them are still works in progress.



The Dark Templar can summon the 'Shield of Ghaz'kar', which provides protection for him and any allies standing within it's sphere of influence.



The dash ability allows you to briefly sprint forward. It has a low mana cost and cooldown, so you can use it often if you're trying to move through an area quickly. It's also very useful for escaping hordes of enemies when you're about to die.



Color Schemes

When showing the game to friends and colleagues I often get conflicting advice. Some want it more colorful, others advise making it grittier. Some like outlines, others don't. Some like intense bloom, others hate bloom and want it subtle to the point of almost not being present.

To deal with this nightmare I just chose to make all of these configurable via the graphics options. Outlines are optional, bloom intensity can be specified by the player, and there are several color schemes available (normal, grim and colorful).



This is the grim color scheme. It is high contrast, low saturation and has a sepia effect (yellowish color grading). This particular image may not have been the best demonstration since there is already a lot of orange and yellow present so it exaggerates the sepia a bit.


Multiplayer Options

I started work on supporting multiplayer right from the start. It worked well at the time with the limited feature set present, but unfortunately, in trying to get the game fleshed out I've neglected it for a while. Nevertheless support for multiplayer features is somewhat present.

My initial intention was to have an MMO feel where you'd explore the town and other players would be exploring with you. I may still go this route, but if it proves too complex I may fall back to you exploring alone but then forming a raid party which invites other players to enter multiplayer mode to raid a dungeon together.



The option to form a raid party is only partially implemented. One of the things I want to cater for is having experienced players assist newer players in leveling up. One of my frustrations with MMO's is that even if you want to play with friends, the experience gap is often too large and they're forced to create new low-level characters if they want to play with you.

Sunday, May 3, 2020

Bleaktide Part 4: Game Development Process

Note that this is part 4 of a series. In this installment I'll start discussing some of the more technical and design related aspects of the game.

Up until now I've discussed the mood and theme and mostly just posted screenshots to give an overview of the game. In this post I'll begin to incorporate some technical game development aspects into the write-up, though I'll try to keep it brief and not get bogged down in detail.

The game is being developed in the Unity engine using the C# language. I refer to characters as 'units', mostly because some of the code I brought in at the beginning was re-used from one of my previous real-time strategy games (where individual characters are generally referred to as 'units').

There is a massive amount of logic associated with each unit, and not all units share all logic. For example, villagers don't have abilities, playable characters aren't autonomous and don't require 'brains', and monsters don't hold conversations. So my unit framework consists of a core Unit class and then a collection of unit component classes, each of which handles a specific aspect of that unit's behaviour. Below is a screenshot showing all of the components attached to the Crypt Lord prefab.


A list of the components attached to the Crypt Lord unit, one of the playable character types. Each of these is a single C# class responsible for one aspect of the character's overall behaviour.

Monster Setup

So far there are about 22 monster types in the game, though only about a 3rd of these have actually been implemented (the rest cannot be used yet). There is a fair bit of setup for each monster type -- their materials and textures need to be modified to fit the common look and feel of the game, their animations often need to be setup and tweaked, and there is a lot of common unit setup (as illustrated in the image above) which needs doing before they become operational.

Unity has an old legacy animation system, and a newer, more powerful animation system called Mecanim. Nowadays most character models are setup to work with Mecanim, but occasionally you'll encounter models that still rely on the legacy system. I wrote an animation system that wraps this functionality so that it doesn't matter which format is used.



This is my monster animations test scene. It allows me to transition between animations using the buttons at the bottom to ensure that transitions are all smooth and that the animation speeds / durations are to my liking.



Unity's Mecanim animation framework relies upon state graphs called 'animator controllers'. Whilst powerful, they require a lot of work to setup and it can be difficult to get the exact behavior you want, especially when you have dozens of characters to setup. Over time I decided to forego the use of animator controllers and to rather handle smooth transitions between states using my own framework.



An example of a Mecanim animator controller graph. They can get much, much more complicated than this.



I prefer a simpler approach where I decide beforehand all of the possible animations characters will need (and the settings required to get the desired behavior). I won't go into detail, but a screenshot of the setup panel should give some idea of what I mean...



This is the animation setup for a monster called a 'Jungle Durg'. It uses the legacy animation system but setting it up for the modern Mecanim system is identical using my framework.



I'll just throw in a screenshot of a few more monsters to pretty this post up a bit and not bog it down with too much technical information. Click the image to get a zoomed in few.



Monsters behave in a pretty simplistic, predictable manner at the moment. I may expand upon this aspect and introduce more complex behaviors later, but for now the system I have in place does the trick. Each monster is controlled by a class called the 'Monster Brain'. It handles things like checking whether there are any enemies in sight or whether it can hear anybody.

It has a vision arc in front of it that allows it to detect you at a distance if you walk in front of it. However, monsters have a limited hearing range and so you can sneak past them from behind if you're careful.

Some monsters are cowardly and will run away if it looks like they're going to lose a fight. Monsters will also attempt to rally nearby allies to come to their aid.




These are the settings currently available for setting up a monster's 'brain'. Still pretty simple at this stage but it does what I need it to.



Monster Combat

Engaging in combat with fearsome creatures is, of course, a core part of the game. Slaying them gives you valuable experience points and loot. You'll often find yourself surrounded as monsters rally allies to their aid and so you'll need to rely on your abilities, potions and brews to buff yourself and deal additional damage.

The montage below shows the Dark Templar using an ability called the 'Shield of Ghaz'kar' to protect himself (and nearby allies if any were present) from the Roach Khan about to attack him.







When monsters are slain they can potentially drop loot. To some extent this is randomized, however there must also be some designer input into this process so that the items they drop are thematically relevant (and it's especially important for quest related items). Below is an example of my setup for specifying the list of items a monster can potentially drop.






I think I'll call it at that for now, this post is getting long. I'll be sure to include more technical information in future posts. In the next installment I introduce some of the gameplay features I'm working on...