For this interview, I sat down with the man behind it all in Lux, a turn-based strategy game based on the popular and classic board game Risk. Lux is another IGF finalist example of a game created through the dedication of a single (mainly) person, a trait made clear by Dustin, who took time off his vacation France to answer a few questions.
Who are you and what was your role on Lux?
Dustin: My name is Dustin Sacks, I'm 23 years old and live in Montreal. I was the person who started programming for Lux, in my spare time. I had some help from an artist friend and a little help from another coder friend when porting Lux to be cross-platform - other then that I did the rest: coding, website, business stuff, etc.
Congrats on making the IGF finals. Is this the first time you submitted a game to the IGF?
Dustin: Yes it is and I was quite surprised - and pleased - to be selected as a finalist
Is this your first game or have you made others in the past?
Dustin: Lux is the first game that I have finished making. I previously started working on a Euchre card game and also a text-adventure game, both just for fun - and to learn more programming stuff. Neither of those got very far
How long have you been developing games? What got you started?
Dustin: Well I would say that I only really started developing games with Lux, once it was getting somewhere. Before that it was just something that I did for fun in my spare time, since I was in university at the time, studying CS. I guess I just wasn't satisfied with the scope of the programming assignments that I was getting, so I would just do some coding in my spare time and games were what I chose to do, since they are the most fun to program, in my opinion
So would you consider game development something you'd like to continue as a hobby or something you'd like to do independently full time?
Dustin: It started out as a hobby, but it has become my fulltime job now and I am very happy to continue on this road. After releasing Lux as shareware I kept working on it, both for fun and profit (although there was very little profit at first). I kept adding things and making it better, and more people started joining in and becoming paying customers. So once it was making me enough money I quit my day job (having graduated from university and found one during this time). I am very happy running Sillysoft as my job and plan to continue doing so for the future
What's behind the name Sillysoft? Is that meant to mean fun and entertainment?
Dustin: Um, yes - it is supposed to mean fun and entertainment. It was a name I chose because I thought it sounded good and I think of myself as a silly person. If could go back and redo things I would probably choose something that evoked thoughts of a more 'strategic' nature - since I hope to continue in that genre of game. I still do enjoy the name Sillysoft though
What's the basic idea behind Lux?
Dustin: The basic idea is to take over the world!!!!!!!! Lux was started because there were no good Risk-style games available on the Macintosh. I enjoyed playing this really old Risk game because you could play fast games on it, but it had bad AI and no network play and very little features. So I had a grand plan to make an awesome Risk-style game that you could play online and use different maps with and make good AI players, etc., and that is what Lux has become
So does Lux play like standard Risk, or does it have its own game play elements in addition to those of Risk?
Dustin: The basic gameplay is like Risk with a few changes (like you can't choose the number of dice you roll), but there are over a hundred different maps available for Lux. They all play differently then the classic Risk map - different strategies are needed to do well
What was the biggest challenge you had to face during development?
Dustin: One big challenge had to do with the framework that Lux was based on. It was originally using what's called the Cocoa-Java bridge, which is an Apple framework for accessing the native MacOS environment using the java language. This framework isn't used by very many people, and I found that it wasn't all that well supported by Apple either. I was trying to do some fancy coding, and it would cause these bugs to come from the innards of the cocoa-java bridge. Try as I might I could just not solve these problems. Then Apple released a MacOS update that made the problems really bad - Lux was crashing right and left. So I decided that this was a shaky foundation for my program to be on. I had already started work to bring Lux over to Windows by creating a pure-java version, so I bit the bullet and ditched the entire cocoa-java interface and went to pure java for all platforms. It took a while to recreate the MacOS-friendly interface (and some things were impossible to recreate completely), but it has been accomplished now. I come from the Macintosh world and I know that it's very important for Mac programs to behave in the expected way on that platform. Lux is a windowed game (as opposed to full screen where such things don't matter as much) and it has to fit in with the native environment nicely. So that was a challenge, but I'm happy with the outcome. Another challenge is the ongoing maintenance of the online community that has sprung up over Lux, and that's something that is still happening now
Yes, most people highlight the networking aspect of their games as one of the most difficult aspects of creating it - how was it for you?
Dustin: The actual creation of the networking aspect was relatively straightforward. Lux is a turn based game, which simplifies things a lot. But it is true that it's much harder to debug networking issues, especially with a very small team. Also, the networking component of Lux was developed in the simplest way possible - one player hosts a game on their computer and others join him directly. The Sillysoft server has a matchmaking service (aka a lobby server) that lets people find each other easily, but that's all it does. This has some ramifications on how network games play. For example, if a host quits then the game gets lost and the other players will be pissed off. This has been a constant headache, so I am seriously considering rewriting the networking to pass everything through the Sillysoft server
What do plug-ins add to the game? How are they supported within the game?
Dustin: Lux supports 2 different types of plug-ins. The first are maps. Lux was designed with the intent of supporting arbitrary maps as well as random map generators. Each map plug-in is a text file that matches the proper XML format (which is documented on the Sillysoft website). It used to be that you had to create this XML file by hand - and a surprising number of people actually did this. Lux now has a Map Editor inside of it that gives users a GUI-based way of making maps. The map plug-ins have been a tremendous success and have become one of Lux's best aspects. Tons of different users have made maps and many of them are very good. Also, the map XML file can specify a 'theme' for the map; which is 1 or more images for the map background and foreground. There are a few users who have created awesome map designs utilizing graphics they designed - it has been amazing to see all the different things that users have created. The other kind of plug-ins that Lux supports are code-based. There is a Java interface that can be used to program computer AIs and random map generators and have Lux recognize them. Lux looks in some specified folders on startup for any class files and then uses a simple custom class loader to load the plug-ins. There haven't been as many code plug-ins created as maps, which isn't surprising given that most people aren't programmers. Some of the ones that have are very good though. Additionally, one of the core aspects of Lux's plug-in support is the built-in Plug-in Manager. This is a window inside of Lux that users can open to see previews of all the newest plug-ins and install them. It checks a specific script (PHP file) on the Sillysoft server that sends back some XML with details of the plug-ins as well as the URL of a preview picture and details needed to download the plug-in. On the other side of this there is an online form where users can submit their plug-ins. Then I look at them and if they are approved they are added to the Plug-in Manager for the whole Lux community to enjoy
You can see all the plugins that have been created for Lux at http://sillysoft.net/plugins/
What other tools besides Java were used to create Lux?
Dustin: All of the server-side components are written in PHP. This includes the matchmaking service, the Plug-in Manager, update checks, and the rankings system. I used PHP because I was familiar with it and the cheap web host I had at the beginning supported it. In terms of dev-tools I use the XCode IDE and some other Apple-provided tools along with the java dev tools
Where did the name Lux come from? Does it mean anything?
Dustin: In a university class, the professor was handing back papers and he was calling out names. One name he called out was Lux. I thought it was a really cool name and it became the code-name for the project. A while ago I wanted to change it but I couldn't come up with anything better, so Lux it stayed. It does mean light in Latin I think, but that didn't have anything to do with it
Quality of Life is the new hot topic of the industry. What do you do to keep it fun? Any views on the current state of the industry's QoL?
Dustin: Well, for me quality of life is great. I work for myself and I treat myself well. Why is it possible for me to do that? The answer is simple: I didn't take any funding to create Lux and I'm selling it straight to consumers over the web. I think that this is the wave of the future really. Selling directly over the web is an obvious route to take - It cuts out all the overhead of retail. It's the same as with music - digital goods can be easily provided over the net at a lower cost - so it seems clear to me that's going to grow more and more and you're seeing the big companies start to try it too with Valve's Steam. The aspect of self-funding is harder to address. Many developers lock themselves up by taking money at the start. One solution is to be a small team and make a small game - basically the shareware model that Lux uses. Of course I have never really worked in the mainstream games biz (the closest I got was a job offer from EA), so I don't know how good my advice is
Did you ever push yourself to finish the game or achieve a certain milestone, or were you able to keep things evenly paced?
Dustin: Right before the first release I needed to really push myself to finish up all those niggling little things. The same kind of thing has happened for other major updates. I set myself deadlines and I have hit most of them, but not all. Distributing over the net is liberating in that it's easy to release updates - that's one thing that I like a lot. Since the first release I have kept up a relatively stable series of updates. Every month or so I have put out an update with more features or bug fixes. I find it works very well for improving the game and building up a user community - while starting out small
Have you looked beyond Lux yet? What's next?
Dustin: I have started the initial stages of creating another game. It will be turn-based strategy like Lux but with a focus on teams, with multiplayer being a core component of it. This is something that Lux users have requested, but I don't think it would fit into Lux nicely, so I am designing another game around it. I've given myself the generous deadline of October to finish it, so hopefully I will hit that
Well good luck at GDC, I'll see you on the Expo floor in March
Dustin: Cool, thanks for the interview