:::: MENU ::::
Posts tagged with: gamedev

Adventure Games – Design and Development Lessons Learned Talk from SGC 2015

My talk from the Slovenian Games Conference 2015 is now online. It covers lessons learned from the last 2 years of working on our adventure game Elroy and the Aliens.

Sorry for the poor audio quality – the slides are posted below and downloadable on Slideshare.

Talk description: In this talk right from the trenches, we cover several stages of adventure game development, including conceptualization, story, game and puzzle design, programming, voiceovers, music and production. Elroy and the Aliens has been in development (with lots of love) for about two years, which has produced a lot of useful tips, tricks and lessons learned. Many of the areas covered are generally applicable to all (especially narrative-based) games.


Virtual D-Pads suck

bigjoe-virtual-dpads-suck

This pretty much sums up my thoughts about virtual d-pads on touch-screen devices.

If you have a game for a device that doesn’t have any physical controls, the touch screen itself should be an asset, not a problem.


Exporting tasks from Basecamp to Trello

After using Basecamp Classic for years, our team needed something fresh.

We had just come from an all-day test session that resulted in 200+ new tasks, and I started looking around for something visual, fast and with a good API.

We opted for Trello after some fruitful Twitter research and tests.

Getting data out of Basecamp Classic is pretty easy: under Settings:Export, they allow you to export all tasks, messages etc. in raw XML format.

2014-07-25_1556

Using a slick little library called Trello.NET, I then wrote a simple C# task importer that cycles through the XML file, creates lists and adds a card for every outstanding Basecamp task.

Within a few hours, the new board was ready and we were up and running!

photo

We will keep using Basecamp for some of our projects for a while, but Trello is already proving to be must faster and more convenient, especially when working on a game.

*Update*

Here’s some of the code I used (it won’t work if you copy paste it directly).
You can also see some naming conventions we used for task severity (like “nice to have”, “critical” and “polish”).

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using TrelloNet;
using System.Xml.Linq;
using System.Xml;

/* ... */

Board elroyProduction;

void addCard(string taskDescription, string taskResponsible, TrelloNet.Color color, 
List list, string creator, string addedOn)
{
    NewCard card = new NewCard(taskDescription, list);

    var resCard = trello.Cards.Add(card);

    if (taskDescription.ToLower().IndexOf("critical") != -1)
        trello.Cards.AddLabel(resCard, TrelloNet.Color.Red);
    else
        trello.Cards.AddLabel(resCard, color);

    trello.Cards.AddMember(resCard, getMemberFromName(taskResponsible));

    trello.Cards.AddComment(resCard, creator 
    + " added to Basecamp, " + addedOn);
}

/* ... */

// Main method:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("basecamp_classic_export.xml");

xmlDoc.DocumentElement.SelectNodes("todo-lists/todo-list");

foreach (XmlNode xmlNode in xmlDoc.DocumentElement.SelectNodes("todo-list"))
{
    string listName = xmlNode.ChildNodes[4].InnerText;

    List list = trello.Lists.Add(listName, elroyProduction);

    int count = 0;

    foreach (XmlNode task in xmlNode.SelectNodes("todo-items/todo-item"))
    {
        if (   task.ChildNodes[2].InnerText.IndexOf("true") != -1 
            && task.ChildNodes[2].Name.IndexOf("completed") != -1)
        {
            continue;
        }

        TrelloNet.Color color = TrelloNet.Color.Yellow;

        if (listName.ToLower().IndexOf("bug") != -1)
            color = TrelloNet.Color.Orange;
        if (   listName.ToLower().IndexOf("nice to have") != -1 
            || listName.ToLower().IndexOf("polish") != -1)
            color = TrelloNet.Color.Green;

        addCard(getDescription(task), getResponsible(task), color, 
                list, getCreator(task), getCreatedDate(task));
        count++;
    }

    if(count==0)
    {
        trello.Lists.Archive(list);
    }
}


Indie Games and Innovation

When Sony announced the PS4 a few days ago, we saw more of the same – more power, more polygons and higher reliance on visual verisimilitude – but this time with a share button.

As videogame researcher Ian Bogost put it shortly after the event (tldr):

A first-person shooter is a first-person shooter. A driving sim is a driving sim. FIFA is FIFA. There’s nothing revolutionary about them, no more than there’s anything revolutionary about a wacky family sitcom or an apocalyptic action flick.

We are seeing fewer and fewer examples of AAA games surprising us with something new and creative. With huge budgets and shareholder value at stake, large organizations manage risk by sticking to proven game concepts.

Indie game developers, on the other hand, don’t have to. We can experiment with new game mechanics and themes and push the limits of gameplay for the rest of the industry.

But are we really seeing that much more innovation in indie games?

Continue Reading