Monday, July 16, 2018

B-Grade Renegade development retrospective (or... "Sometimes the making of a game is part of a longer game plan")

Murray Lorden takes a retrospective look at the development of his third game B-Grade Renegade, and discusses how it represents part of a longer journey towards becoming a fully operational death sta... um, game developer, making the games of his dreams.

This blog entry tells my story of making B-Grade Renegade: Race to the Rocket, a top-down action roguelike for iOS, Android and Mac.

B-Grade Renegade - Game Trailer



The game features a lot of procedurally generated elements, with strategic choices to make on the meta-game map, and then proc-gen maps and objectives whenever you go into a mission.

The game takes inspiration from classics like Interstate '76 (for it's tone and flavor), FTL (for it's race against time in a procedurally generated set of obstacles and opportunities), and a touch of the original Grand Theft Auto (such as being able to jump in and out of different cars, and the top-down viewpoint of the game).

But the experience of making the game is really about much more than just trying to sell people on how cool this game is.

For me, it's a much longer journey about learning to make games on my own terms, and building stepping stones that take me towards being able to make the games I truly and ultimately want to make!

So let's go back to the start...

Although I started working in the Australian games industry in the year 2000, only now am I finally starting to feel confident with building my own dream games for the world to play.

It's been a super long path for me getting to this point. I started in Quality Assurance at Bluetongue Software in Melbourne, Australia, working on "Starship Troopers: Terran Ascendancy", super keen to be a game designer, but joyfully accepting a job in "QA" when it was offered (not really knowing what QA was at the time!).

I'd done some map making for Quake and Quake 2, and later I made a small Thief 2 level that I was really proud of ("Lady Lomat's Flute")... and I'd also been teaching myself 3D Studio Max 2, and then 3, using books I'd buy in the city.

But one of the tough things about the Australian games industry, is that there's never been that many studios that focus on level design, even though Level Design is a fairly meat-and-potatoes job at many bigger studios around the world.

So I spent 6 years at Bluetongue Entertainment, where I did quickly graduated to being a Game Designer and Assistant Producer on Jurassic Park: Operation Genesis for Xbox, PS2 and PC.

I then went to Firemint (now Firemonkeys EA) for 5 years, where I applied my Game Design, Producing and Video Editing skills to their massive successes with early mobile hits Flight Control, Real Racing 1 and 2, as well as being lead designer on the cute stealth game SPY Mouse and some other GBA and Nintendo DS titles.

Then I left in 2011 to start making my own games!

I'd discovered an engine called Game Salad which allowed me to make my own games with a sort of "visual scripting", and I hoped to cash in on the promise of the mobile games cornucopia!

Well, after making Rad Skater Apocalypse in 2012, and following that up with Pulp Diction (2012), I'd learned a lot about designing and implementing games, and had earned about $300. Gulp.

It may have been wise at this point to discard all of my half-finished Game Salad prototypes and projects and launch into a much better engine like Unity...  after all it was fully 3D games that really had my heart - games like Quake, Half Life, and especially Thief, and now more recent immersive sim games.

But instead, I wanted to get one more of my unfinished Game Salad projects finished off! A project that had been there since the start.

Originally entitled simply "Foxy Driver" when I started it in 2011, I finally finished it off as "B-Grade Renegade: Race to the Rocket" in 2018, after many life changes and game development challenges, and a full time job teaching Game Design & Production at a tertiary level games school (during which time I'd also been learning Unity, and coding in C#, and having to keep beating this Game Salad project over the head for years was a real pain).

The game was actually the first project I began making in Game Salad, and it ended up being the last that I would finish in that engine before switching my focus entirely to Unity (PHEW!).

In the final days of using Game Salad, I decided to make some development retrospectives of my B-Grade Renegade project, to look over how the project works, discussing the design of the game, how the actors work, and also discussing how the design changed over the years.

There are two videos covering these topics. The first video focuses on looking at the Game Salad project, looking over the actors, explaining how the game is structured, how the AI works, the vehicles, the weapons, etc.


B-Grade Renegade: Game Dev Retrospective - Pt 1: Inspecting the Project



And in the second video I open up a whole bunch of the project files dating back from 2011 right through to 2018, looking at how the project changed, and discussing all the design changes as development went along.


B-Grade Renegade: Game Dev Retrospective - Pt 2: Jumping thru versions (2011-2018)



I wanted to share the story of developing B-Grade Renegade to tell just one story of a developer's completely-inglorious and non-astounding journey through learning to make a complete game. Coming to the end of this project, I'm really glad I finished it off.

Although it has formed a triptych of games that have all basically launched to absolutely no fanfare or sales of any kind, I consider these to be really successful stepping-stone projects in their own way, and I'm excited about launching into my next project in Unity, currently just code-named "Romero", a fast paced challenging FPS game with some immersive sim aspirations (more news on that as it comes to hand!).


Murray Lorden
MUZBOZ Games



You can get B-Grade Renegade for Mac for free on itch.io

And is also for sale on the iOS AppStore

And on the Google Play Store


Saturday, July 7, 2018

20 Design Mantras for Arkane's "Prey" (2017)

I recently discovered a great video from Game Informer where they visited Arkane studios, before Prey (2017) came out, and spoke to Ricardo Bare and Raphael Colantonio, and they explain these fantastic "20 design mantras" that they had printed up on the office walls.  

They relate specifically to games that are often called Immersive Sims, a genre that I'm very much into!

I had heard Harvey Smith talk about these mantras with Steve Gaynor on the awesome podcast Tone Control - Episode 19 (specifically around 1:05:10), about the development of Dishonored as well, and I was dying to see them.  So I was delighted to find this video which showed the ones from Prey, which I think probably overlap a lot with the Dishonored ones.

These are game design philosophies that I really want to include in my own work, so I wanted to write them up for easy reference here.  :)  I love the Looking Glass Studios approach to game design, especially the Thief games, and Arkane have been one of the strongest proponents of that style of game design.

So, without further ado... I've written up the 20 mantras below for easy reference.  You can see the images themselves underneath.

======================================
20 Design Mantras for Immersive Sims

Multiple Paths
Sand box spaces with open ended circulation, multiple entry points, verticality, crawl space.

Well Integrated Puzzles
Plausible problems to solve, not gimmicky key-lock puzzles with only one solution.

Say yes to the player
If it occurs to players, and sounds like fun, let them do it.

Ecology
AI's interact with each other and the world in interesting ways that can be exploited by the player.

Dynamic Hazards
Environmental changes force players and enemies to adapt: Solar flares, depressurization, zero-g, creature populations.

Simulated World
The game world and entities exist independently of the player and behave according to consistent rules.

Space Dungeon
The player must survive in a hostile enclosed world.

Dramatic Setups
Mission settings, plot turns, characters and outcomes should feel highly dramatic.

Intentionality
Provide information about the situation and allow the player to formulate a plan.

Grounded Sci-fi
Near future environment should feel convincing and cohesive, a careful balance of the familiar with the marvellous.

Clarity
Clearly mark the world and allow the player to navigate.

Fuck Ladders
You'd just fall to your death anyway.

Improvisation
Players like to be clever.  Let them use game systems to experiment and form their own solutions.

Consequences
Player makes choices that have meaningful emotional or mechanical consequences.

Environmental Storytelling
Invite players to create stories through interpretation.

Object Density
The world feels crafted, rich with objects and interactivity, but not cluttered.

Break the Patterns
Players like to be surprised.  Avoid repetition in encounters and setups.

Mood
All elements should serve a signature emotional tone.

Reuse of Space
Let the player return to areas that evolve over time, building investment in the setting.

Specialisation
No character should be good at everything.

======================================

Here are the original mantra posters, with text captions as well.



Multiple Paths
Sand box spaces with open ended circulation, multiple entry points, verticality, crawl space.



Well Integrated puzzles
Plausible problems to solve, not gimmicky key-lock puzzles with only one solution.



Say yes to the player
If it occurs to players, and sounds like fun, let them do it.



Ecology
AI's interact with each other and the world in interesting ways that can be exploited by the player.



Dynamic Hazards
Environmental changes force players and enemies to adapt: Solar flares, depressurization, zero-g, creature populations.



Simulated World
The game world and entities exist independently of the player and behave according to consistent rules.



Space Dungeon
The player must survive in a hostile enclosed world.



Dramatic Setups
Mission settings, plot turns, characters and outcomes should feel highly dramatic.



Intentionality
Provide information about the situation and allow the player to formulate a plan.



Grounded Sci-fi
Near future environment should feel convincing and cohesive, a careful balance of the familiar with the marvellous.



Clarity
Clearly mark the world and allow the player to navigate.



Fuck Ladders
You'd just fall to your death anyway.



Improvisation
Players like to be clever.  Let them use game systems to experiment and form their own solutions.



Consequences
Player makes choices that have meaningful emotional or mechanical consequences.



Environmental Storytelling
Invite players to create stories through interpretation.



Object Density
The world feels crafted, rich with objects and interactivity, but not cluttered.



Break the Patterns
Players like to be surprised.  Avoid repetition in encounters and setups.



Mood
All elements should serve a signature emotional tone.



Reuse of Space
Let the player return to areas that evolve over time, building investment in the setting.



Specialisation
No character should be good at everything.

======================================

Tuesday, May 8, 2018

MUZBOZ's thoughts on a Dream Studio for an indie game developer

I grew up playing the Sierra games, made in Oakhurst, Coursegold, California.  The King's Quest games were rich with signs of the Californian trees, and a love of nature.



Later, coming out of Spokane Washington, there was Myst and Riven.




I grew up in a bushy suburb in Melbourne Australia, and I've always thought it'd be lovely to have a studio out in the hills.

I was recently out in the hills east of Melbourne, and I took lots of nice photos of areas where I could build my dream studio.  I thought I'd post them here, kinda like a little dream journal.  :)


I love this place, overlooking a big valley.  This has set a sort of benchmark in my mind for what I'd be looking for.  :D



And here's a bunch of other miscellaneous photos.  



              














Markets



Community Centre









Sunday, March 4, 2018

ROMERO - Dev Video #6 - Doors, Locks, Keys

I've added a basic system for DOORS, including the ability to have them LOCKED and openable with a specific KEY.

 

I still want to tidy it up and make it more versatile, so doors can be activated by one or more triggers (invisible, or physical buttons), and to improve the inspector interface, so it's easy to make a variety of custom "doors", like extending platforms, etc.


Friday, March 2, 2018

LoKayTioN - Dev Video #001 - Points of Interest (POIs), Scrollable Map, Placeholder Text

I've been fiddling around with a location based game for a while.  

It's a sort of dystopian future mystery, with crime elements, set in Melbourne, Australia.  

It could be more of a straight detective mystery.  

Or... I have also been considering a very different sort of experience, more like a podcast mixed with other ruminations on life, the universe and everything.  :D

Thursday, March 1, 2018

ROMERO - Dev Video #5 - Slow Mo / Bullet Time (the basics)

Put in a basic Bullet Time / Slow Mo system! Currently just toggled on & off with a button press.

But gonna link it up to a power source, so it is limited.




Sunday, February 11, 2018

ROMERO - Dev Video #4 - Reach to the Radio Tower!

Here's I've tweaked up the level layout a lot!  

Note It's hard!  This video shows two failed attempts.  :D

OBJECTIVE: "Reach the Radio Tower to win the level!"




Lots of little fixes and improvements:

  • Improved "grounded" check:  I now use four spaced raycasts near your feet, to check if you're grounded, even when near an edge.  It now reliably jumps all the time, allowing for much more control!
  • Prevent the player from pushing through walls:  I use a raycast to check in the direction that you are trying to move, and scale down the movement if something is in the way.
  • Tumbling death: Player falls over / tumbles when killed (detach camera, add force and torque, and have it bounce around).




Thursday, February 8, 2018

Romero - Dev Video #3 - Better bullets!

Here I've improved the bullet behaviours...
  • Added sounds for collisions & tinkling.
  • Muzzleflash & bullet trails.
  • Bullets falls to the ground after colliding with things.




I'm also trying out a few different musical tones, using some existing tracks I've made over the years.  :D

Definitely thinking about making a full game out of this!

Something small, 3 - 5 missions.



Sunday, February 4, 2018

Romero - Dev Video #1 and #2 - More AI behaviours & player hitpoints

Get ready to SUCK IT DOWN!  

"Romero Plissken" is back, in this cyborg-exploding grenade-imbibing game of generic Quake-like action.  Hehehe.

I'm building an action game system, basically from the ground up.

I'm starting off just focussing on a Quake-like shooter, to get down the basics of creating NPCs.  

Getting a character moving around using a skinned mesh, Mecanim, NavMesh  and AI code.

Ultimately, I want to build a versatile AI character for Unity that I can apply to all sorts of different circumstances:

  • Guards, in a fantasy game.
  • NPCs, who walk about town.
  • Characters in a scripted cutscene.

An ecology sim of different characters, creatures, agents.




Dev Diary #002

Enemy AI
  • Here I've made the enemy attacks hurt the player, and if the player dies it restarts the level.  
  • The Soldier has Grenade attack, and at some point will also have a MG attack, probably firing short bursts.
  • The Slicer has a Melee slice attack.
  • The Kamikaze runs at you and Explodes.
  • Explosions hurt the player and also nearby enemies.

The AI characters also have different sensory attributes based on their state.  
  • Once they have sighted you, they go into a heightened alertness state (Chasing) and aggressively try to track you down.  
  • When in the Chasing state, they have 360 degree vision (to prevent you from just "running behind them" to elude them), and a greater ability to detect the player at greater distances, and in less light.  
  • If they lose line of sight with you, or drop below a threshold of visibility of you (considering distance and lightness), then after 5 second they drop back to their Neutral state.  This is when you have escaped, and eluded them.

Dev Diary #001

I started this project at Global Game Jam 2018... and here's where it was after that first weekend.




Friday, January 19, 2018

Cloth Cape on a character in Unity

I like the look of cloth simulation in games!

So I decided to put a cloth cape onto my 3D scan of myself.

First attempt took some tweaking, but is working quite well!

Takes a while to build and place the appropriate colliders on the player for the cloth to collide with!

I added colliders to the following bones...
  • Spine 1 (as the torso)
  • Spine 2 (as the shoulders)
  • Left Arm & Right Arm
  • Shield




Friday, January 12, 2018

Low poly 3D scan of myself in Unity - Mixamo rigging & animations

I'm excited to have discovered a workflow to get a fairly quick and easy 3D scan (using my HP laptop with a RealSense camera) of a person (myself in this case) to rig and put into Unity via Mixamo.



I feel that this may finally provide me with a workflow to have characters in my games.  I'd like to try making a GUARD character, by scanning someone dressed up in a costume as a guard, then apply animation to that, and work on the AI from there.  :D


Here I've reduced the poly count of the character from about 100,000+ down to 2000 polys.  I think I could keep it higher, and also tweak or stylize the texture more.  A good start, though!



Second iteration:

Tweaked up the pipeline a bit, and got a much nicer looking result.



Did a new scan with more suitable clothing and room lighting.
Then reduced mesh from about 200k polys to about 10k polys, using MeshLab which is super easy and great, and kept the texture intact! And used a 41 bone rig, instead of 21 bone rig in Mixamo (although still using some of my older 21 bone animations here, so not making use of the improved hands, except on the "Sword & Shield" guy.


Here's a more detailed breakdown of the workflow so far...

SCANNING

I use ItSeez3D (free), which is designed to just scan 3D models of people, so it automates that process quite well. You just stand the person somewhere with fairly even lighting, and start scanning. You basically just walk around the person in realtime, and you can see the mesh roughly forming around the person as you go. Takes about 3 minutes to get all the way around, starting at the face, then go around the head, torso, and then arms, legs, feet and finish. 


(We tried a few times to try to get an optimal scan - if you go around too many times it can start to add extra arms or heads out of confusion! So you kinda get the hang of the scanning process and the best pose to stand in (arms out a little bit, legs a bit apart - if you try for a full extreme t-pose, we were finding it kinda barfed - I think it's designed to just scan people standing at ease, which isn't great for getting a nicely separated rig pose.)

Then you can see a quick local preview in the app, or tap Final Model to upload your data to their server, it processes it and sends back the final model. That is a bit slow, and takes about 20 minutes of waiting - mainly because the upload is slow.

Then it spits out a 100k - 200k high resolution model and texture, which you can save as an OBJ.

CLEAN UP

This gives you a pretty-much-ready-to-go model and texture, with feet separated from the floor, etc. It's basically a fairly clean human scan.

The issues that I have with the data at that stage (for my purposes) are:

  • It's too high poly for my needs.
  • Possibly some of the mesh hasn't scanned clearly, such as the legs below the crotch being joined together a bit too much, or not enough separation between thumbs and hands, etc.
  • The UV mapping is OK, but there's generally a few places (under arm pits, between crotch, perhaps top of head) where it didn't quite scan the texture, or a strange seem occurs such as the camera's auto-exposure causing a light part being butted up against a dark part, for example, or just a jaggy seem here or there).

MY WORKFLOW

So, I'm trying to simplify the steps as much as possible, but currently, I solved these issues by:

  • I used Mesh Lab to open the high poly mesh, and save it out at 10k polys. And it automatically does that in a few seconds, and keeps the texture mapped correctly! Easy, free, quick! Takes about 2 mins.
  • I opened the OBJ in Maya to tweak a few places where I didn't like the mesh separation. I had an issue where the legs were joined together a bit too high up. Tweaked it by hand. Took about 3-5 mins, just moving verts with soft selection.
  • To tweak the texture, I loaded it up in 3D Coat, and used Clone paint tool to clone things around to patch up any bits (under the arm pits, etc) that came out white, or something. I just clone nearby bits of the texture over it to cover it up. (Generally these things happen in hard-to-see places, so it worked fine to do this fairly roughly.) Took about 3-5 mins. Exported the texture again from 3D Coat.

Done!


So, my issue with the process so far is mainly just 3D Coat. I can use that at work, but I don't own it myself. So I'd love to replace that part of the process with something free! Then it'd be a very straight forward process, all using free software.

Currently, it would take about 60 minutes to scan someone and have them in Unity with their mesh and texture cleaned up a bit, including waiting about 30 mins for the initial scan to get processed through ItSeez3D.