Install Theme

Posts tagged with ‘indie games’

Monsters & Monocles Devblog: Intro to Graphviz

This is a series of posts that I’ll write on some of the technology behind Monsters & Monocles. If you like what you see please consider voting for us on Greenlight!

Graphviz? What?

If you work with procedural generation, you will invariably run into issues where your generation goes crazy and it’s not immediately clear what’s gone wrong. One of the best ways to debug these issues is by trying to visualize your results in a different, more abstract way.

When working on our room generation system I decided to use a tool called Graphviz to debug the room connections. To give you an idea of what that looks like, graphviz takes these floors:

And displays it like:

So, what data do we see in this graphviz version of the map?

  • Rooms and all of their logical connections (doors)
  • Floor start and end points (green and red rooms)
  • The first floor has a locked door & key objective, the locked connection and room containing the key are highlighted in purple
  • A floating node used as a comment gives the seed used to generate the map. That’s the blue box.

Beyond the raw data you can use the graphviz model to discuss the properties of the generated map and ask questions like “is this what I want for the game?” For example:

  • The critical path for each floor seems to be about 7-10 rooms long. Is this what I want for gameplay? How long does it take to clear a room? What does that mean for how long it takes to clear a floor if you take the optimal path?
  • Dead ends rarely exceed two rooms in length. Is this enough to feel like you’re exploring?
  • The keygun for the locked door on floor 1 ended up really near to the locked door. Would it be more interesting for the key to be earlier in the level? It takes up a gun slot for the player which can be limiting, but it’s also the best crowd control gun. How would it affect play?

It’s really hard to reason about those types of questions without having this kind of data. When I’m working on map generation I’ll often generate 20-30 mapsets and graphviz equivalents and use that as the start of analysis in addition to playtesting.

Create your own Graphviz maps

So, I’ve convinced you on the value of graphviz. Great! Now let’s do a quick overview of how to make your own maps. Fortunately it’s really easy!  The graphviz file format is a text based format that revolved around nodes and connections between those nodes.

Here’s a small sample graph with three nodes and a connection:

graph map {
	node [fillcolor="#444444", fontcolor="white", style=filled, shape=box]
	edge [color="#666666"]

	room0 [label="room0"]
	room1 [label="room1" fillcolor="#44CC44"]
	room2 [label="room2"]

	room0 -- room1
	room1 -- room2
	room2 -- room0 [label="special", color="#CC4444"]

Top Level

Everything gets included in a graph block. The word after graph is the identifier, I’m just using ‘map’ for mine. You can use anything you like though.

The next two lines are directives that tell graphviz how to process all nodes and edges by default. The “node” line tells graphviz to make all nodes dark gray boxes with white text for their labels. The “edge” line tells graphviz to make all edges a lighter gray.


The next three lines create three nodes, which we call room0, room1, and room2. The label in the options block is what will actually show up in the generated graph image, the identifier at the start of the line is used for telling graphviz about the connections between nodes. If it makes sense you can give your rooms a different label that’s more readable (e.g. “Start Room” instead of “room0”). Note on room1 we show how you can override default values as necessary. In this case we’re setting room1 to be green in the generated graph.


The last section defines all the connections in our graph, and they take the format <node 1> — <node 2>. In our example our graph is not directional, but graphviz does support one way paths if you need them. Again note that you can add labels or override colors as necessary.


The graphviz website will tell you different ways to generate your graph, but on os x I use the following command line:

neato -Ln100 mymap.gv -Tpng > mymap.gv

Which for our sample map, gives us the following output:

Other Uses

I’ve shown how we use graphviz to debug our maps, what else could you use it for? Anything where you have elements and transitions! Use it to validate the flow of text dialogue in your scripts, asset dependencies, level transitions. If you think of any other uses, let me know! For more graphviz options and a full specification of the language you can go here.

Any questions? Feel free to ask it below, ask me on twitter, or start a discussion thread on our greenlight forum.

And if you enjoyed this post, please click here and give us a yes vote on greenlight!

A recap of our week on Greenlight

What a week!

Last Tuesday we launched our Greenlight campaign to get Monsters & Monocles on Steam. It’s our first PC game so we didn’t have a great idea of how the community would respond.

I’m happy to say the support has been overwhelmingly positive. Right now we’re 82% of the way to the top 100, and we continue to climb a bit closer each day.

I’ve included all of our stats page as it looks right now so you can see it, it may be interesting or useful to other teams considering doing greenlight.

What’s Worked

Twitter: Twitter has been a great resource for us. People have been really generous in spreading the word and we’ve seen a steady stream of visitors to our page because of it.

Daily Content: To give people a visit to visit the greenlight page, our website, etc we’ve been trying to post at least one content update a day. People have really seemed to like this, and it does seem to be driving some people to the greenlight page.

The Trailer: We put a lot of work into the trailer, and the reaction to it has been really positive. It even got picked up by Gametrailers! The trailer is the first impression a lot of people have about the game, so I’m glad we took the time to make it as solid as we could.

What Could Have Been Better

Press Contacts: Being our first PC game, a lot of our attempts to contact the press have been ‘cold call’ emails, and we haven’t gotten a lot of responses. The exception was Destructoid, they were fantastic about taking a look and posting a bit about it last Friday. So, thanks Destructoid!

It’s also been hard for us to find the right press contacts. Lots of sides (CVG, etc) don’t even have a tip/contact email on their website that I could find. So we’re slowly building a list of people to try and contact but I really wish we had this sorted out when we launched the greenlight.

No Press/Demo Build: This is just a reality of where we are in the project. But I think we would have a much easier time talking to press if we had a demo build to send them, and we also could have talked to youtube folks since they’d have something to show. We’re working on getting this done ASAP since I think it will be a big help.

'Nuclear Clone': Because our first trailer focused on a lot of the action, we’ve gotten a lot of accusations of being a clone of Nuclear Throne. I’m confident that our game will stand on its own when people see more of it, but I wish in retrospect we had highlighted some more of the differences in the trailer.

I’d like to thank Rami and the rest of the Vlambeer team again for their support when we launched last week, I think it helped minimize a lot of the negative reaction. But we could have done more on our part as well, and we’ll have to as we continue to promote the game.

Going Forward

I’m not sure how many votes we actually need to get greenlight - for now we’re focusing on getting into the top 100. It seems like Valve greenlights 50-100 games every few weeks, so that seems like a good initial goal.

So, we still need your help! If you haven’t voted yet, please go vote for us by clicking here. If you have friends who you think might be interested, please let them know as well.

Any questions about any of this? Leave a question in the comments, use the ‘ask’ tumblr feature, or hit me up on twitter (I’m @rje). Thanks for reading!

New Year, New Job

This post is far too belated, but better late than never:

At the start of the year I started working with the guys over at Retro Dreamer, and I couldn’t be more excited. We’re hard at work on our first game and I’m really excited with how it’s shaping up.

We’ll be announcing it any day now, but here are a few vines from early builds to give you some hints about what we’re building:

More work on the space station, normal maps are done, diffuse textures up next

More work on the space station, normal maps are done, diffuse textures up next

More work on the first space station

More work on the first space station

Sorry for the radio silence over the last couple of months - I hit a bad spot in my day job and needed to find new work. But that’s behind me now and I’m happy to share a bit of the work I’ve done in the last week as I get back up to speed.

So what’s new in this build?

  • All new asteroids with high res textures from Alex. This should help for folks who like to fly close to asteroids and check them out for a sense of immersion. Really happy with how they look right now
  • Launching from the docking bay! You launch by setting your throttle to max and get an initial boost by launching directly at max speed. I want to add some camera fx to improve the “slammed into your seat” feel, but it’s a good start.
  • Rough model of the space station. People wanted bigger things in terms of scale, and now you’ve got it. Still need the texture maps and all of the objects that go on the outside (guns, shield generators, etc), but the space station clocks in at 4km in diameter. It’s immensely fun to fly around, and I can’t wait to integrate it into gameplay.
  • You can’t see it, but I’m playing with the Thrustmaster HOTAS flight stick! Really improves the feeling of control, and having a real throttle makes a huge difference. 
New asteroids for First Law
Alex is making some new asteroids with improved detail/texture so the really big ones don&#8217;t get as blurry when you&#8217;re up close. Should be nice for helping sell the sense of scale.

New asteroids for First Law

Alex is making some new asteroids with improved detail/texture so the really big ones don’t get as blurry when you’re up close. Should be nice for helping sell the sense of scale.

First set of joysticks for testing in First Law

First set of joysticks for testing in First Law

First look at having a pilot’s body in First Law. Huge addition in terms of immersion!

Early combat footage from First Law my April #1gam and first project for the Oculus Rift.  The sense of immersion is insane. Hoping to ship a small combat sim by the end of the month, and add some missions into the game next month.

Rubbertron 1.1 for Win, Mac, Linux

Now with configuration support for keyboard & controllers!

It’s not a fancy feature, but hopefully it makes things a bit easier for you if you have a non-traditional keyboard or want to play with a gamepad.

Download Links:

Rubbertron: A love letter to arcades of the 1980’s

Play in the Unity Webplayer

- or - 

Download for:

In the early 1980’s a mall near where I lived had an old arcade called Gold Mine.  I wasn’t usually allowed in there but I remember sneaking in a few times to look at all the arcade games.  They kept the lights in the arcade pretty much off, so everything was lit by the neon glow of arcade machines.

It was a magical place.

With my February #1gam, I wanted to make an arcade game that wasn’t a slavish replica of games from that era, but rather how I remember them thinking back to walking through Gold Mine. Loud, bright, glowing, fast, and challenging.

The best way to play this is hooked up to the biggest screen you can find and the lights low, trading off between friends to see who can get the farthest.






A Sense of Scale - Cod of Duty’s Weekend

The Press

So early on Saturday, I woke up and saw this:

Rock Paper Shotgun - Everyone Was Thinking It: Cod of Duty

Holy crap, right?!  And then over the course of the next 48 hours, it was followed by:

Absolutely blown away both by the coverage and the positive response by the people who took the time to comment. Thank you, everyone!

The Players

As of this post, Cod of Duty has had 16,579 unique visitors from 116 different countries.  Here’s a map of the distribution (darker green = more players from that country):

Preferred Play Method

  • Web Player: 5786 downloads
  • Windows Binary: 4525 downloads
  • Mac Binary: 745 downloads
  • Linux Binary: 362 downloads
  • Source Code Views: 175 clicks

I’m really glad that developing in Unity gives me a wide variety of options for deployment, since it seems like there’s no clear favorite for players.  I’ll definitely spin a full set of builds like this for future games!

All of the downloads ended up generating just over 100GB of traffic on my web server this weekend - I’m very happy I have a good server, a lower end one might have melted.

Again, Thank You

It was a wild ride this weekend and one of the most encouraging ones I’ve ever had as an indie game developer.  If you’re looking for more fun games to play, check out some of the other crazy games over at One Game a Month!  And if you like the sound of co-op arcade multiplayer, come back at the end of February for when I post my next game. :)

Updated Cod of Duty builds

The only big change is an invert y-axis button for the folks who wanted that.  Bring up the pause menu during play (esc key) and toggle to your heart’s content.

Download for:

CoD of Duty: The Premier First Person Shooting Fish in a Barrel Simulator

Play in the Unity Webplayer

- or -

Download for:

(Note: Hello good people of the internet! I also have a new free arcade game you should check out. It’s available for Android/Windows/Mac/Linux and iOS is coming soon. Click here f more info)

For my January #1gam, I wanted to do something that’d be both small in scope and something that I hadn’t really done before.  Based on a joke that my friend John made about Call of Duty always being abbreviated ‘CoD’ on the internet, I decided to make a first person shooter where all of your enemy are fish.


A lot of the ‘joke’ is how I feel about the standard FPS single player campaigns.  Short, not terribly interesting, and completely over the top with their story elements.


From a development perspective this was actually a lot of fun to work on, even if I spent way more time on it in January than I ever anticipated to. I had never made anything like a FPS before, and I had never had any sort of scripted elements in a shipped game before, and this let me try out both of those things.


Things I had wanted to do that I ended up cutting in the interest of time:

  • Co-op multiplayer
  • Controller support
  • An underwater level

In retrospect I think any more levels probably would have taken too long to play, and the joke frankly gets a bit old by the end of it. The 10-15m it takes to play through now seems sufficient.