I've just read a job advertisement for a game programer position at Firemint, the Australian developer of the smash hit iPhone game, Flight Control. They must be making bajillions of dollars, as they seem to have about 14 employees in their office, which is not bad for a new studio with no apparent external funding.
Anyhow, one of the lines on the list of job requirements was:
* Demonstrated understanding of how to translate a game design into code and fill in gaps as necessary
"Fill in gaps as necessary". LOL.
That's probably the #1 requirement for a game developer. Most of the time, there is no design, no spec. If there is a spec, it is probably wrong. I'm not sure if this is a good thing, or a bad thing. The engineer inside me says "Surely this is no good!@#!" but the late night coder in me says "This is reality. Cope with it."
Monday, December 28, 2009
Monday, December 21, 2009
Wing Commander Concept Art
BinaryWriter, BinaryReader for Python
I've released some code which I use to read and write binary data in Python, which can then be used with System.Collections.BinaryReader and BinaryWriter in .NET.
I primarily use this for communicating between Unity3D applications (Mono) and Stackless Python servers. It includes the classes as an optional C extension if you feel the need for speed.
I primarily use this for communicating between Unity3D applications (Mono) and Stackless Python servers. It includes the classes as an optional C extension if you feel the need for speed.
Saturday, December 19, 2009
The Sky Crawlers
I've just finished watching The Sky Crawlers. This is a brilliant yet depressing film. Don't watch it if you're looking for something cheerful. Do watch if you want to spend a day or two thinking about what it might mean.
I'll probably take a look at the game when it is released, sometime this January.
I'll probably take a look at the game when it is released, sometime this January.
Friday, December 18, 2009
Perth - GameJam Capital of .au?
I just had a look at what the other GGJ sites in Australia are doing.
Currently, NSW has two locations with two Jammers in total, and Victoria has one location with two Jammers.
Perth has one location with... 14 JAMMERS! Yes, Perth is the GameJam capital of Australia. We have an awesome community of artists and developers. I am certain that we will kick collective ar$e in January!
Currently, NSW has two locations with two Jammers in total, and Victoria has one location with two Jammers.
Perth has one location with... 14 JAMMERS! Yes, Perth is the GameJam capital of Australia. We have an awesome community of artists and developers. I am certain that we will kick collective ar$e in January!
Tuesday, December 15, 2009
C# 3.0, properties.
After discovering that my favourite game platform could potentially use C# 3.0, I decided to see what I might be missing out on while I'm stuck with C# 2.0. I found the relevant document on MSDN, and came across this curious snippet. It is an example of "Automatically Implemented Properties".
Please enlighten me C# experts, why would I want do this? Surely this is semantically equivalent to:
It seems all the first snippet does is add extra function call overhead and extra keyboard taps. What am I missing here?
public Class Point {
public int X { get; set; }
public int Y { get; set; }
}
Please enlighten me C# experts, why would I want do this? Surely this is semantically equivalent to:
public Class Point {
public int X;
public int Y;
}
It seems all the first snippet does is add extra function call overhead and extra keyboard taps. What am I missing here?
C# 3.0 in Unity3D?
Yes, it seems it is possible.
From http://answers.unity3d.com/:
I'm guessing that this works because the C# 3.0 compiler still compiles to bytecode which is compatible with the mono runtime used by Unity 2.6.
I might try this out later, and post instructions for OSX.
From http://answers.unity3d.com/:
Download and install the latest version of Mono (2.4.3)
From C:\Program Files\Mono-2.4.2.3\bin, grab these files: mono.exe, mono.dll, libglib-2.0-0.dll, libgmodule-2.0-0.dll
From C:\Program Files\Mono-2.4.2.3\lib\mono\2.0, grab these files: gmcs.exe, gmcs.exe.config, mscorlib.dll
Copy all these files to Unity\Editor\Data\MonoCompiler.framework
I'm guessing that this works because the C# 3.0 compiler still compiles to bytecode which is compatible with the mono runtime used by Unity 2.6.
I might try this out later, and post instructions for OSX.
Tuesday, December 08, 2009
Animation Resources for Indie Game Devs
Mixamo offer a tool for building and modifying prebuilt animations. The site looks very easy to use. Watching a soldier release his inner ballerina is... quite entertaining.
I'm quite impressed with the results so far, I can see myself using this in future projects.
I'm quite impressed with the results so far, I can see myself using this in future projects.
Tuesday, December 01, 2009
Symbols in Python
Wikipedia defines a Symbol (as used in Lisp):
I'm not overly familiar with Lisp, however I have done some work with Scheme; and an explicit Symbol type is something that I sometimes miss in Python. Do you ever find yourself defining classes to be used as global constants, so that you can use the identity operator? Perhaps something like this:
The last requirement is for Symbols to be unique within their own namespace. Our symbols module can support this too.
A symbol in the programming language Lisp is a primitive data structure that has a name. Symbols can be used as identifiers. Symbols are unique in a namespace (called package in Common Lisp). Symbols can be tested for equality with the function EQ. Lisp programs can generate new symbols at runtime. When Lisp reads data that contains textual represented symbols, existing symbols are referenced. If a symbol is unknown, the Lisp reader creates a new symbol.
I'm not overly familiar with Lisp, however I have done some work with Scheme; and an explicit Symbol type is something that I sometimes miss in Python. Do you ever find yourself defining classes to be used as global constants, so that you can use the identity operator? Perhaps something like this:
Symbols offer a better alternative to this, so I decided to implement a Symbol type in Python, which offered some of the features of a Lisp Symbol.
class START: pass
class QUIT: pass
if something() is QUIT: exit()
import sysHow is this module intended to be used? Try this:
class Symbols(object):
def __init__(self, name):
self.name = name
self._symbols = {}
def __repr__(self):
return "<SYM %s>"%(self.name)
def __getattr__(self, name):
s = self._symbols[name] = self.__class__(name)
self.__dict__[name] = s
return s
def __getitem__(self, name):
return getattr(self, name)
s = sys.modules["symbols"] = Symbols("Root")
>>> import symbolsThe symbols module contains every possible Symbol, and can be used as simple set of constants... but it can also do more than that.
>>> symbols.START is symbols.QUIT
False
>>> symbols.START is symbols.START
True
>>>
>>> symbols["START"] is symbols.STARTSymbols can be accessed by a string name, which lets you use different characters in a Symbol name, and provides a convenient method for creating new Symbols at runtime.
True
>>>
The last requirement is for Symbols to be unique within their own namespace. Our symbols module can support this too.
>>> symbols.Foo.Bar.Foo is symbols.FooThis feature allows you to have an nested set of Symbols which retain their identity wherever they're used in your program.
False
>>> symbols.Foo.Bar.Foo is symbols.Foo.Bar.Foo
True
>>>
Subscribe to:
Posts (Atom)
Popular Posts
-
These are the robots I've been working on for the last 12 months. They each weigh about 11 tonnes and have a 17 meter reach. The control...
-
This hard-to-see screenshot is a Generic Node Graph Editing framework I'm building. I'm hoping it can be used for any kind of node...
-
So, you've created a car prefab using WheelCollider components, and now you can apply a motorTorque to make the whole thing move along. ...
-
MiddleMan: A Pub/Sub and Request/Response server in Go. This is my first Go project. It is a rewrite of an existing Python server, based o...
-
Why would I ask that question? Python 3 has been available for some time now, yet uptake is slow. There aren't a whole lot of packages i...
-
It is about 8 degrees C this morning. So cold, especially when last week we had high twenties. To help solve the problem, a friend suggeste...
-
After my last post, I decided to benchmark the scaling properties of Stackless, Kamaelia, Fibra using the same hackysack algorithm. Left axi...
-
I'm now using bzr instead of svn. I'm pushing my repositories to: http://exactlysimilar.org/bzr/ I'm also auto publishing docume...
-
Possibly slightly more correct lighting. The rim light is now only applied in the direction of the sun, rather than being purely based on vi...
-
I've just read a newspaper article (courtesy of Kranzky ) from WA Business News documenting the malfeasance, gross negligence and misc...