Bright Night Games


Still Alive
Posted by Paul

Alright, I know itís been a while since Iíve shown any sign of existence here on the site, but Iím finally making an update. Itís been so long that I donít even remember what has happened, so bear with me.

My team and I finally finished our sophomore year project, Whiplash , this past July. We spent the extra summer months polishing the game in our own time while juggling a few summer courses. The total development cycle took about eleven months, which brought us right up to the entry deadline for the Slamdance game competition. Unfortunately for us, the competition was cancelled this year, so our extra effort will most likely go unnoticed. In any case, I think the game strongly benefited from the extra months of work and should still make for an excellent portfolio piece.

Whiplash Screen
Whiplash title screen.

When I arrived back in Seattle for the fall semester in September, a friend showed me his iPhone game, Hairball, a game reminiscent of the old TI-83 game Falldown. He also showed me where I could buy the game on the Apple store for $2.99. And finally, he told me he had sold 500 copies, raking in just over $1,000 profit in the first month (Apple takes a 30% royalty).

At the time, I had no idea that Apple had even released an iPhone SKD for public use. After a bit of research, I set a goal to make my own iPhone game in C++ taking no longer than seven days. During that week, I designed, implemented, and polished what later became known as Snowball . It took us a couple days to port over to Objective-C and the iPhone SDK, but within a week we had it up and running. Some of the code was down right hideous , but my end goal was to make money spending as short amount of time as possible. After all, I was still taking a full load of classes.

Snowball Screen
Snowball title screen.

Fast forwarding a few weeks, Snowball was released for $1.99 on October 13th, and managed an astounding 5,000 sales in its first month! Somehow, we managed to get featured on the front page of the iTunes store and raked in 500+ sales a day for a full week. Currently, I plan on picking up a MacBook and developing another small iPhone game over Christmas break.

All that good luck aside, Iíve also been working on my junior game project titled Kabloom . Itís a 3D third-person simulation game where the player is stranded on a dying island in the sky and is tasked to transform it back into a beautiful Eden. Itís a hard game to describe, but one of the core pieces of technology we want is to dynamically grow and shrink trees. Since we donít have any artists, we decided to procedurally generate these trees using Lindenmeyer System fractals. Right now weíve got it working fairly well; we just need to integrate it back into the main game project.

LSystem tree with lovely cube leaves.

Whew, that was a lot of information! I feel like Iíve only scratched the surface about what Iíve been doing the past few months, so hopefully I can go more in depth about something and write an article for the site. Speaking of, I finally got around to uploading some Whiplash screenshots, removing Adventure Kid completely, and I added a Snowball section. I also tried to get some of the older art to be a bit more consistent.

Alright, I think thatís enough for now.

More Words
Posted by Andrew

Not much new to say, just feel like writing a little bit about my project.

As I said in my previous update below, I'm working on a new side-scrolling platformer heavily influenced by M.C. Kids. It's tentatively named IcePlod, if only because I needed a name to stick into Subversion. I've been working on it off and on, with a lot of work being done just this past week. I finally implemented basic hit detection, which makes creating and testing the engine a lot more enjoyable. It only works for solid platforms, no slopes or item interaction yet.

IcePlod takes most of its gameplay from M.C. Kids. In fact, while I was working on the game's hit detection and physics yesterday, I used M.C. Kids in an emulator to try to match the original game's physics as closely as possible. I used a stopwatch to estimate the maximum running speed, how much friction to slow the kid while on the ground, maximum falling speed, and things like that. I think I've got a very close approximation of M.C. Kids's physics. It feels about the same to run through level 1 in each game. It's very neat to have my own implementation of their game.

While the game currently appears to be nothing more than a clone of M.C. Kids, I've got plans to turn it into my own game. Mostly I have ideas floating around in my head and on scraps of notebook paper, but I like what it's shaping up to be. Once I'm satisfied with how closely IcePlod mirrors M.C. Kids, I'll begin to create my own unique game. I'm anxious to get to that point, but cloning M.C. Kids provides a very good goal to shoot for in the meantime.

Below is a picture I took of the game a few weeks ago. Since I've been working on physics and hit detection lately, a more current screenshot would look very similar. After I "finish" with the hit detection, I'll begin working on the graphics, which are in sore need of improvement (note the stretched texture along the ceiling).

IcePlod Screen Capture
IcePlod very early in development
(Click to enlarge)

To that end, I've been playing around with graphics shaders, specifically Cg, lately. I chose Cg over GLSL since my laptop only supports OpenGL 1.4, which does not implement GLSL, but does work with the shader programs that Cg creates. I don't know yet how or if IcePlod will use shaders, but it's another tool to have handy. I'm hoping for the game to look really neat, though I know that'll take a lot of work. I don't have any specifics about what I'd like to do, but I'll get to it after hit detection is done enough.

More later.

One Year Later
Posted by Andrew

A year goes by quickly.

Been keeping busy for the past year with various projects. I created another game late last year. It's a top-down shooter in the style of a bullet hell game, written in C++ with SDL and OpenGL. I made one complete level, then quit work on it as I became disinterested. I don't think it's good enough to do a formal release, but you can download what I ended up with here. Includes source, Linux, and Windows binaries.

This summer I started working on a new OpenGL game, this time written in Java. Since beginning my current job, where I work with Java, I've taken a liking to the language. Having a huge library of tools and not having to deal with garbage collection are really nice features not available in a low-level language like C. The type of games I write also run just fine in a virtual machine -- they're not exactly graphical marvels.

The new game is based off of one of my favorite games M.C. Kids, which I've mentioned before. In short, it's a side-scrolling platformer with 3D graphics and gameplay that will closely reflect that of M.C. Kids. It's way too early in development to give a screenshot, but things look promising. The map editor is complete enough to be usable, and player controls and gameplay are starting to come into place. I'll put up some pictures once it's presentable.

Hopefully this year will be more exciting than the last!

Setting up BNGCVS and a small update
Posted by Andrew

For the past few days, I've been working on a fun side project. I'm setting up a server to act as the central point for Paul and I (and any future members of BNG) to store and share our projects with each other. After asking around for advice, I decided to use Arch Linux as the operating system for our new server. Arch is really nice because it lets you choose exactly which packages to install and has a really impressive and easy to use package management system. With Arch, you install the "base" packages which allow you things like network support, basic programming tools (GCC suite, etc.), and the package manager itself. Then, you find which other packages you want and grab them from the Arch repository using the package manager.

Because I was setting up a server, I stuck with the base install and just a few other packages. Of course, there is no GUI or window manager, so that really simplified setup. When we need to access the server's OS itself, we can SSH into a terminal (running OpenSSH). It also has an FTP daemon (bftpd), should we ever need to share larger files.

But the main reason for setting up this server was to have it act as an SVN server. My Game1 project is nearing completion. My plan for it is to have a main trunk which is not specialized for any type of game and regularly gets improved between projects. Things like better tile support or an improved sound system would go into the main trunk. When I decide to create a new project, I'll start a new branch and start writing the more specialized code. Things like gameplay mechanics or classes specific to a game go into the branches. By using an SVN server, I can have everything be automatically tracked for me as I create new game branches or improve the trunk.

While I'm here, I'll also post a quick update on the new game I'm making. Like I mentioned earlier, the engine is nearly complete (for this game, anyway). I've still got a few features to put in and probably a million bugs to fix, but the focus right now is on the game's actual content. I may have said it before, but I'll say it again - this is the stuff I really don't like doing. I'm about halfway done with the level layout for one level, and have also sketched out a large portion of the level's art. What's left is to put it all together into one full level package. I started with the most difficult and ambitious level, so once I've knocked this level down, I think things will get a lot easier.

Exciting things are going on here and I'm anxious to get this game out of the door so I can start work on my next project which I've had sitting in the back of my mind for some time. Stay tuned.

New 2D Engine
Posted by Andrew

For the past few months, I've been working on a new 2D game engine from scratch, tentatively titled "Game1". Engine writing is something I really enjoy doing. All three of the BNG games I've worked on (Slide's Adventure, ABAHD, and Dyox) have been written, other than the input/output libraries, from scratch by me. SA used OpenGL for its graphics, while the two PSP games just drew pixels directly to the screen.

This time, I'm using SDL. SDL has support for graphics, audio, sound, and keyboard and joystick input. SDL is by far the best 2D graphics library I've used. OpenGL is mainly a 3D library, which means 2D support is sort of hackish. SDL, on the other hand, has no support for 3D by itself, which means it excels at 2D operations. It's really simple to use - just tell it where to draw a bitmap and it's there. One of the best features of SDL is that it's completely cross-platform. My game engine should compile and run on any OS that has the standard library and an SDL port.

By using SDL, most of the graphics things are already taken care of, which means I can concentrate on the game itself. Right now, I'm building the engine using a small, simple platforming game as a test. It's turning out wonderfully. It has collectables, enemies, two draw layers (background and foreground), and almost nothing hard-coded in. The engine is getting near completion for what this small game requires. What's left is story-telling devices (like dialog boxes) and audio. When those are complete, I'll be able to put together some levels, string them together, and release it.

Game1 Editor
Game1 Level Editor showing a Tetris-themed level
(Click to enlarge)

When it's complete, I'll do a more thorough writeup of how the engine works. I haven't decided yet if I'm going to release the developer tools so that others can use the engine to create their own games. We'll see how things go after the release of this small game.

After this game is complete, I have plans to work on a much larger and more impressive platformer. I'm shooting for quality near that of Cave Story. I've got a rough outline for a story in my head and have been working on fleshing it out on paper. Of course, this is all far off in the future. Plans change.

Speaking of changing plans, I've stopped work on Dyox Complete. There doesn't seem to be much interest in it by players or myself and I'm not involved in the PSP scene at all anymore. If you'd like to see Dyox Complete released, shoot me an email and that might motivate me enough to clean it up and release it.

Aside from all that, Paul let me play Toasted a little while ago. The game was real fun and pretty well made, especially for a first-year project. It struck a pretty good balance of being challenging but not annoying. It was cool to see a project that 5 different people worked on come together into one playable game. From what he told me, and how the game ended up, the teamwork went really smoothly, which is pretty neat to me. I'm looking forward to more games coming from him and his team.