Bringing the world of freegames together. 1340 freeware games | 160 online games | Total: 1500 free games
Date: 2005-10-19
Title: Robert Kooima, Creator of Neverball

Brain Dump

Mid 2003, a game called Super Empty Ball was released. Later that year, the project was promptly changed to the more original title, Neverball and the first version was released. Working on the project off and on, Robert Kooima, managed to release major updates every two months up until September 2004. Neverball has since developed a loyal community.

I shot off Robert a number of questions and was surprised by the detailed answers that I got back.

Robert: First off, I appreciate the interest in my work. I'm more than happy to respond. Prior to today, I had not put much thought into many of the things you ask, so today you get a brain dump..

Give the readers a little bit of background about yourself..

My name is Robert Kooima, I'm 31 years of age and I live in Chicago. I'm currently a student working on a PhD in Computer Science at the University of Illinois at Chicago, where I'm employed as a research assistant at the Electronic Visualization Lab.

Were you an avid videogame player when you were younger? What systems did you own and what games did you play?

I was a video gamer as a kid and I'm still a video gamer today. I got started at the age of 10 on an Apple II at my elementary school. My first computer game obsession was Lode Runner. It had action, it had puzzles and best of all it had a level editor.

Through my early years I had a IIe, a IIgs and a couple Macs, then started into PC and console gaming in the early '90s. I've owned pretty much every major gaming platform produced since then. I enjoy following the march of technological progress on the PC, displayed by games like Doom, Quake, Half-Life and their many sequels but when it comes right down to it, I most appreciate the simple fun of a Mario title. Super Mario 64, in particular, really pushed a button in my head and I'm a huge fan of colorful, cartoony, explorable worlds.

What originally sparked your interest in coding? Were you specifically interested in coding games? What projects did you work on before Neverball?

I'm not certain why I started coding. It seemed like a fun thing to try. I found a book on BASIC programming and spent the summer of '85 monopolizing the libraries' few computers. It clicked with me so I kept it up. I recall very little of the crap that I produced at the time. It was all Applesoft BASIC hello world type stuff. My parents bought me a computer as soon as they realized my interest wasn't a short-term fad.

At that time, my primary interest in computers was, of course, computer games. So, it was natural to dive straight into game programming. It quickly became apparent that BASIC was pretty limited. It was obvious that Lode Runner was fast and my BASIC programs were slow thus Lode Runner was not written in BASIC. So I found a book on the 6502 microprocessor, bought a copy of Merlin 8/16 and began writing assembly language code. Nibble Magazine taught me how to make efficient use of the Apple II's graphics. Over the years, I completed several games for the IIe and later the IIgs. They were shooters mostly and nothing terribly groundbreaking. They still exist on 5.25" floppy and I'd love to rescue them some day and replay them on an emulator. The joy of programming was deeply ingrained during high school when I was a pretty successful competitive programmer. I wrote code with all my free time and like most programmers I'm sure, I started 10 times as many projects as I finished.

In 93, I started CS at the University of Iowa. The school had several SGI Indy workstations and I had my first exposure to OpenGL. It became the focus of my interest and everything I've done since then has had some relation to real-time 3D. I didn't spend much time writing 3D game code while I was in school but I did work for several years on real-time data visualization applications. I was employed as a research assistant doing CAVELib programming and tele-immersive VR applications. This set me on my current career path.

Also circa 93, I became aware of Free software and I first began using Linux. The GNU GPL appeared to be an obvious good. I have always been more driven by the desire to program than by the desire to produce applications. I'm more interested in the path than the goal and to me, the GPL asserts this distinction by forcing that path to remain exposed.

I graduated with an MS in 2001 and went to work with a data-viz group based at NASA Langley Research Center in Hampton Virginia, where I continued VR application development. This was a 9 - 5 job. I was completely immersed in high-end 3D graphics development during the day and I had nothing to do after 5PM. So I'd just go home and put in several more hours doing my own work.

The 3 years I spent in Hampton were productive. I produced PLT Scheme's OpenGL binding, I wrote a cross-platform GLUT replacement (which only I ever used), I developed a reliable in-order UDP transport protocol, I implemented two complete game engine frameworks that never got fully polished into games (Killbot Factory - a 3rd person shooter and Baz Borken - a 3D platformer) and I produced Neverball and Neverputt.

How did the idea of Neverball come about? Were there any particular games that inspired it and if not, where else did your inspiration come from?

I had enjoyed Marble Madness but at the beginning I was not motivated to create anything similar. I didn't set out to create a game at all. I merely wanted to write code that did something interesting. So initially, Neverball was born of a desire to combine physics and graphics into something cool.

Several years ago I did some mapping for Quake 3. I became fluent in qeradiant (later GtkRadiant) and I developed an appreciation for the .map and .bsp file formats as solid geometry representations. I've enjoyed mini golf games since Zany Golf on the Apple IIgs, so I decided to I write a .map parser and expand it into a mini golf game. I called it Puttnik, and it was little more than a physics demo with a putting interface. Then I lost it.

In 2002, the Puttnik source resurfaced on a friend's hard drive and I resolved to continue development. I improved the physics code and it became a game. Then I played Super Monkey Ball on the Nintendo GameCube and I realized how easy it would be to convert Puttnik over to that mode of gameplay. So I implemented it, I liked it and I decided that would be the future of the project. I wasn't interested in implementing superficial features like animated monkeys, so I called it Super Empty Ball and posted an Image of the Day to flipCode (RIP).

The graphics in Neverball have a distinctly modern feel to them, while the gameplay harks back to some older influences - were there both older and modern influences at work when making the game?

In all honesty, the major motivator behind Neverball's graphics is simplicity. I'm no artist and I've never been able to create convincing 3D models or realistic textures. I do think I can tell when something looks like crap, however. So, I decided the overall aesthetic of the thing would be flat and clean. If I couldn't make it look real, I could at least act like I intended it to look unreal.

I threw in some tricks like mirrored surfaces, sphere-mapped chrome, animated billboard backgrounds and these ratchet up the visual appeal nicely, however they're fundamentally things that I implemented not for their artistic value but for the experience of implementing them. Game levels are constructed of simple geometric primitives and nearly all of the textures were created using the GIMPressionist plugin.

The gameplay is, at its core, quite fundamentally Super Monkey Ball. SMB has clear roots in Marble Madness. It's a pretty simple: you roll around, trying not to fall off of platforms. I implemented this and called it 1.0, releasing it with 25 levels. At that point, one of the game's bigger fans, Mehdi Yousfi-Monod, began actively practicing Neverball level design. He had a ton of ideas for things like timers, switches, teleporters, etc. He began work on a new set of 25 levels, and I began work on a 25-level extension of my base set. We traded hundreds of emails and during this time the feature set, gameplay and best practices of Neverball evolved.

Whether this is or is not Super Monkey Ball, I don't know. I do feel that we've accomplished one the important goals of game design. Each of the simple elements of a game is like a word, and the set of all words define a vocabulary. The ways in which these elements interact define a grammar. The grammar defines a syntax and each syntactic construct has a semantic meaning. Given a sufficiently rich vocabulary and a sufficiently powerful grammar an infinitude of sentences and paragraphs can be formed.

Each level in the game is one of these paragraphs and the experience of playing it is the semantic interpretation. The goal of the game-maker is to define a minimal rich vocabulary, a minimal useful grammar and the true nature of the gameplay emerges in the variety paragraphs that people create.
This language notion comes from Super Mario Brothers 2. In SMB2, there were simple nouns like enemy, bomb and Pow (kill-all block). There were nouns like run, jump, lift and throw. These syntactic constructs mapped onto a variety semantic meanings and interpretations. One such semantic structure is that any single action resulting in 5 kills is rewarded with a 1-UP and there are many points in the game where 5 simultaneous kills are possible. Now, at one point in the game there is a long straight section with several widely spaced enemies and one Pow. If you throw the Pow and sprint behind it as it bounces you can eventually scroll 5 enemies onto the screen. They die one by one and you get a 1-UP. This is a very surprising result representing a deep structure, yet it emerges from a few basic elements: Pow, throw and sprint.

Good game design strives for this emergence of complexity from simplicity. During the implementation of Neverball, many, many features were suggested and only a few were used. The value of any feature suggestion was analyzed not in terms if its direct impact on the gameplay but instead in terms of its usefulness in the context of the language of the game.

How long did Neverball take from start to finish? Were there many obstacles in the way of getting the game completed? Would you say that making Neverball was more of a fun or frustrating experience?

I started in May 2003, announced Super Empty Ball in August 2003 and released Neverball 1.0 in October 2003. Then I took a break and picked it up again in February 2004, working off and on. I made a major release about every two months, the last one being 1.4 in September 2004. Around that time I left Hampton and moved to Chicago, where all my free time evaporated.

It was an extremely fun experience. The fun was the primary motivation. In all honesty, the creation of Neverball was a very selfish act. I wanted to enjoy writing code, creating graphics, designing levels and making music.

How much planning was involved before embarking on this project? Did you envision the game exactly as it was made beforehand or did you make certain creative changes as the project was being made?

No planning. I don't want to advocate a disregard for planning but I think it works when you have a very small development group that is not afraid to throw things away. It's always important to recognize when your lack of foresight has led you to a dead end. I did a lot of backtracking and disposing of useless code.

Initially, the game's feature set was significantly smaller than it is now. There were no high scores, no replays, there wasn't even a shadow under the ball. The encouragement of players brought about many of the details in the game but more on that in the next answer..

Did you learn a lot while making the game?

I did learn a lot while making the game but I didn't learn much about programming. I learned what it is to run an open source project and how to deal with users. This aspect of the experience was much more difficult than I expected.

Open source users often see themselves as a part of the process of development. Of course in many cases they ARE and this is what makes open source software work. However this creates a default mindset that all user contribution has value. This is not necessarily the case. Users make suggestions and if these suggestions are ignored, explained away or go otherwise unimplemented, then that user feels rebuffed. People often have trouble recognizing the intent of the author, and how their intent may be in conflict with it. For example: why does Neverball not have a billiards mini-game, as does Super Monkey Ball? Because Neverball is not a billiards game. This is difficult for some to comprehend.

The difficulty is that many user suggestions are indeed valuable. Neverball originally didn't have a replay feature. Mehdi argued for it strongly. I thought about it and eventually realized it was a good feature. Today, sharing replays is the core dynamic of the Neverball community at large. The challenge is to know what is and is not worth adding to the game. There is a motivation to produce feature-rich software but it is more important to strive for coherence of design.

Open source software users seem to have an odd sense of entitlement. If a commercial game fails to run correctly (for whatever reason) the player laments his crappy PC and saves up for better hardware. But if an open source game fails to run correctly (for that same reason) the player immediately dispatches an accusing email to the author and expects the problem to be solved and a patch to be received in reply. Perhaps the user recognizes the futility of badgering a commercial game company and perhaps this speaks to the openness of the open source development process but I think it more directly exposes people's general sense of the proper placement of blame. The sense is that commercial games are produced by professionals and open source games by amateurs so the commercial game failure is the user's fault, while the open source game failure is the developer's fault. This is troubling.

I can summarize succinctly what I learned developing Neverball: who to ignore. I began by ignoring everyone. I felt that if they didn't like my game as I designed it then they could go play something else. Over time I swung around 180 degrees and began pandering to every suggestion, realizing that I can't know all there is to know about a quality game so I must tap the minds of others for the good of the code. Eventually I came to find a balance between the two.

Was the creation of Neverball a full time project – did it take over your whole life or was there a lot of other stuff going on at the time? What was the average day like, creating it?

On an average weekday I went to work, returned around 5pm and worked on Neverball for 4 or 5 hours. I generally only did one thing on any given day. Maybe I'd code features for a few days. Usually after a release I'd resolve bug reports for a few days. Some days I'd work on levels. Some days I'd produce game assets such as textures, sounds, or music. On weekends I'd do the same, except I'd get started in the morning and put in a longer day.

I guess I must admit that it did take over my whole life. It consumed all of my free time but frankly I wouldn't have had it any other way. I was not forced to spend all that time working on the project - I just kept coming back to it because I felt genuine joy while doing it. My absolute favorite thing in the world is a pot of coffee, a desktop full of emacs and nothing else to do for the next 10 hours.

Both the open-source and freeware communities have embraced Neverball – did you expect such a positive response and were you surprised with its success? Has it opened up other doors for you – have you had any offers from professional game companies for work?

I'm not sure how I feel about the success of the game. I'm of two minds about it.
On one hand I feel that I don't have a specific desire for the game to be popular. I've always felt that the game has a target audience of one: me. I've never advertised the game beyond posting updates to the Linux Game Tome. I try to display some humility. I want the game to be accepted on its own merits, rather than generating traffic based on a planted link on some high-traffic site. I'm not making any money from it.

On the other hand, it's human nature to desire recognition. It pleases me to receive fan mail. If the audience were bigger then I might have more fame but aside from that natural desire, I don't have any specific use for fame.

I have not had any offers for employment. I have not inquired at any game development companies. I don't think that's the direction I want my career to go. I'm a research guy, not a corporate guy. Besides, I'm too old to be a game programmer!

Do you like the commercial games industry at the moment or are you a fan of some of the older classics? Do you believe the gaming industry is moving forwards or backwards at present?

My opinion of the commercial game industry today is not unique. It is an opinion espoused by journalists, bloggers and anonymous cowards alike. It is that the commercial game industry, specifically in America, is rotting from the inside out due to monopolization, big budgets, licensing and other practices that create infinitely high barriers to entry. Game companies invest millions in modern games and they want to be certain that they make that money back, so to ensure a return on their investment they copy games that have traditionally made money. This confines the industry to a narrow set of genres and ensures that nothing new ever comes around. Many of the interesting games in recent memory are Japanese as they seem to realize that a game can still be worth producing even if it doesn't turn out to be a million-seller.

Unfortunately, I don't feel that the Open Source game development community is in any position to improve the situation at all. If we could have, we already would have. The OSS game community lacks the focus to bring a game from beginning to end. While there are a few great success, there are 1000 times that many abortions. "... good intentions."

What are your plans for the future? Are there any other games planned – a sequel to Neverball perhaps?

My current goal is to finish the PhD program. That might take me another 2 years.

As for ongoing projects, I've been working on a system I call Electro (http://www.evl.uic.edu/rlk/electro). It's a Lua-based cross-platform scripting system that enables the creation of interactive 2D and 3D content. It has an extremely powerful display configuration system that allows a single application to run across an entire cluster of computers and drive huge banks of displays at interactive frame rates. Check out the website for some screenshots of that. It is capable of stereo-scopic display using a number of stereo technologies and it runs on desktops and laptops running Linux, Windows, and OSX.

The environment I am in, the Electronic Visualization Lab (EVL) has a dual-purpose. It combines computer science with art. Some students graduate with PhDs and others with MFAs. The purpose here is not just to develop high-end visualization technologies for science but to exploit them artistically. One of the goals of Electro is to overcome the technology barrier and allow the artists to take full advantage of the systems that only the CS people have mastered.

This fall semester is the first time that anyone has really started using Electro. There are several projects ongoing, with a few dozen users. It feels very much like the early days of Neverball, when the code was new and the game could be taken in many different directions. I'm having to balance feature suggestions against my own intentions. I'm having to handle bug reports and fixes, and having to explain why some weird behaviors are intentional rather than erroneous. Fun stuff.

At the same time, the Neverball community is active. The forum members have compiled a prioritized list of things for me to do (!) and they've created a ton of new levels. There are a bunch of great features on the menu and Mehdi has another 25 levels which I am dying to release. I've been saying there is a 1.5 release coming up very soon but I keep getting pulled away from it by the demands of school and my new mistress, Electro. Sorry guys! It WILL happen!

Do you have a top. 5 list of your favorite videogames?

Heh, no.

I suppose I could try to enumerate a list but I'm certain to omit something, and to regret the omission. I tend to go with the crowd in much of what I play. In recent years I've really enjoyed GTA3, Mario Sunshine and Katamari Damacy. We'll see whether they still stand out in 10 years. Looking back further I loved Half-Life. I'm a sucker for the Metroid series but Super Mario World 2: Yoshi's Island still reigns supreme among 2D games. In general I look more to the well-produced single player experience than to the 1-on-1 or multiplayer online game. I suppose that's 5. I'll realize what I skipped the moment I hit send on this email.

Again – thankyou so much for your time.

No problem.