Tagged: code

Global Games Jam 2015.

To begin with I’d like to point out that, as we have previously said, one of the issues with a two-person team is things take forever and we are focused on tasks that aren’t blogging about progress…

However a few weeks ago Phill and myself took part in the Global Games Jam event, and because that is self contained it’s easy to post up a bunch of stuff about it!

The theme for the jam was ‘what do we do now?” and we chose to take that in a dangerously route one direction and make some kind of game where the player doesn’t know for sure what the task is, or how to complete it.

The key mechanic for this, we decided, would be a ‘warmer-colder’ type feedback system. What that meant practically was a game where you get a pleasing sound rising in pitch when you do something correctly, and  descending in pitch when you do something wrong. We reinforced this by having everything change colour at the same time- brighter for YES!, darker for NO!

 

Look how clever and cryptic we are haha!

What do we do now?

As you can see from the above screencap, we even made a menu. Very professional.

Now as I’m sure many of you will know, the nature of a gamejam means things very quickly get strange, and this project was no exception. Before we knew it we were making some kind of hell dimension puzzle. And we were OK with that.

The main idea throughout was to keep the player guessing, and we chose a KNIGHMARE referencing aesthetic. Partially to pay a nostalgic homage to our collective childhood, partially because it looks cool.

ENTER, STRANGER.

A bizarre, hell-like environment.

If I explain any more it will ruin the experience (hahahahaha) so why not head over to the GGJ page and have a look.

We intend to polish it up and correct some of the more… idiosyncratic moments. In the mean time we’d love to hear your feedback.

Advertisements

Engine Basics

Interesting workplace, I'm sure that floating brain is a real slave driver

Interesting workplace, I’m sure that floating brain is a real slave driver

The classic

The classic

So, it’s been a while since i posted last but stuff has been moving. I have made a serious start on the engine, I have gone for a ‘roll your own’ approach which may seem like masochism to many people but is, for me, a good deal of the joy of working on a game. It also has the additional benefit of never encountering an issue that cannot be fixed.

Features so far:

  • Deferred Render Pipeline
  • Normal mapping
  • Per-texel material properties (Specular, Specular function, Gloss, Ambient / Emissive)
  • Direct lighting with shadow mapping (buggy)
  • Tile based Dynamic point lights (diffuse and specular)
  • Quad tree LOD terrain
  • Reverse ray-traced model paint feature (more on this below)
  • more I’m sure

Reverse ray-traced model painting?

It became apparent that we could nether afford in time or money to buy or learn a fully featured 3D package, and it would not really play to Luke’s strengths as a painter. It would be far better to be able to paint the scene in photoshop and transfer the painting into texture space, I bought a simple program for this purpose (pixexix) however it was very alpha and little bit riddled with bugs. We don’t have time to wait for it to mature but the concept was sound so I implemented my own, it did not take to long, it also allows us to paint material properties, see the actual results in engine, place lights, create scenes and test shit so its a bit of a win.

 

Documents: First pass

So a big part of the game is going to be sleuthing and deducing, to this end you will be required to sift through paper work from various places. So we need a document system that is a little more complex than just an image or some text, we need to be able to embed metadata in the documents have them be transformed and distorted by photocopiers and fax machines.

With this in mind here is my first pass at a document editor, on the left you have a poor mans XML markup and on the right the rendered page, I’m trying to invoke the look of declassified military documents of the period.

Simple document editor

Simple document editor

This was my reference, the very famous and maybe a little to obvious, declassified Project MKUltra documents. I may have gone back too far on reflection as these documents were probably typed on a typewriter and in our selected period dot matrix printers we common. However they are clearly photocopied. Notice the bulldog clip, copy distortion, the dialation on the characters and smudges. These are things to attempt to recreate in future iterations.

MKULTRA Sample

Phill

This is no game?!

So while Luke gets on with his business of creating concept art and the like I have been building the game, and this is not what it looks like. The following image is of the map editor, or at least the first version of it.

Map Editor

Map Editor

Obviously there is zero art in it, it is not the game engine, in fact the plan is at present that at no point will you see the contents of the map in the game! It is a tool for tuning units, creating landscapes and devising puzzles. I made the decision not to write the engine first as far as I can tell this is the biggest mistake I have made in the past when setting out to write a game because invariably I rarely get past it. So as a change I decided to write the game bit of the game first and leave the engine bit till later.

Story Editor

Story Editor

The game bit includes the story and for that I have build a story node system and editor, seen above. It allows me to craft loose narratives and dynamic story arcs using a simple scripting language I created for this purpose, I can step through and debug the story and will eventually build or generate test run throughs so we can plug holes and see issues at a high level. For the final product I can convert (Emit) the finished story as IL bytecode for maximum efficiency but having it as a scripting language allows me to analyses and modify the structure more easily. For instance the blue node diagram in the upper left portion of the image is generated by analyzing the script and not by explicitly linking nodes.

Phill