Thursday, December 24, 2009

Abobo's Last Stand '89 (Attract Mode)

Camera demo

This is the coolest demo thus far as it shows more of the inner workings of the game engine and what it's capable of. The engine is quite beautifully put together and allows for some neat effects, such as multiple cameras and on-screen view ports. It's even possible to load multiple worlds and control a character in each one.

Crossing the Bridge

I uploaded this last week to YouTube.

I was having too much fun with the game engine. I figured I'd see what I could to create a scene with an interesting mood. This is just a simple mock-up of a foggy bridge scene. This took about half an hour to create with the game engine and GIMP to edit the images.

Tuesday, December 15, 2009

What if Double Dragon fighting room was in 3D?

Yet another quick demo. This one is cool as I reconstructed a room from Double Dragon in 3D and then had some fun with the camera.

Quick game world demo

Here's an update. I've refactored just about all the code so that it's now using a new object-based engine. I really can't describe it in a few words, but the benefit of it is that creating games with the game engine should be much easier.

Here's a demo of the game world in action, the last bit to be refactored.

Sunday, November 22, 2009

Some Old Screenshots

Since I'm just now starting to publicize this game engine that I'm working on, I realize it's worth putting up more screenshots. Unfortunately, I can't post screenshots of the current beat 'em up portion of the game engine as it's being refactored (that work should be done in a few days). In that case, I'll post some really old screenshots from 2.5 to 1.5 years ago. :P I promise to put up some more modern screenshots once I have the refactored work done.

From May 2007: This is a screenshot of an early version of the game engine after I recently ported it over from the Game Boy Advance to Windows. I had a lot of fun being able to populate the game world with multiple entities.



From March 2008: I did these after I redid the rendering portion so that it used OpenGL. I also added health bars and text balloons at this point so that I could actually create neat little in-game cut-scenes using the sprite-based renderer.







New YouTube channel for demos

I've set up a new YouTube channel for video demos of the game engine! Go and take a look at them:

http://www.youtube.com/user/candygameengine

Tuesday, July 28, 2009

Yum yum yum


In keeping with the theme of candy, sweetness, and food, the name of the scripting language that Candy runs on has a suitable moniker: Yum.

Yum is a simple scripting language that lets you do just about anything related to images, game levels, game entities, screen text, and more. It defines the logic of the game, and is incredibly useful for creating on-screen menus and cutscenes, loading game levels and their inhabitants, and queuing up interesting in-game sequences. In fact, the game engine starts by launching the game module's bootup script.

I wouldn't consider Yum a "real" language, although with a bit of work it could be. It's not very internally consistent; it's a bit ugly and incomplete in a lot of places. That said, it should get the job done for Candy.

I'll have more to say about it in this blog over the coming weeks, but today I will focus on function support. In Yum, you can define functions as you can in other languages. Functions can take parameters and can return a value. You can define as many functions as you like in a script file, but they only have scope within that file. Variables created in a function are local in scope only to that function (I will discuss variable scoping in a future post).

Today I completed support for parameter passing to functions. As soon as I finished, the first thing I tested out was a Fibonacci function. If you're not familiar with the Fibonacci sequence, go educate yourself here. (The great thing about this function is that it's recursive, so I can test not only parameter passing but variable namespaces as well.) I ran it and, of course, it didn't work the first time... After a few bug fixes, it's now working great! Here's how you define such a function in Yum:

def fib(n)

if n == 0
return 0
elsif n == 1
return 1
else
return fib(n-1) + fib(n-2)
end

end


There are a few little things I will briefly mention here. 1. The def...end block defines the function, just like in Ruby. 2. return is a keyword used for returning a value to the caller. 3. Yum is a duck-typed language. (I'll have more to say about that in the future.) 4. Finally, recursion works in Yum!

If you want to use the function above, you can just use it as you normally would in any arithmetic operation, but you already knew that:

x = fib(20) * 3 / 5


That's it for now regarding Yum.

Monday, July 20, 2009

Another screenshot

It's fun posting these, so let's have another one. This is a screenshot of multiple Abobos (from Double Dragon) and a sprite from Spider-Man (Doc Oc). The background is from Splatterhouse. You can move the Doc Oc character around and the Abobos will all follow you around.

Sunday, July 19, 2009

Here's a sneak-preview of Pong

Recently I added if-elsif-else-end statements to my scripting language that runs the game engine. The game engine also includes the ability to read mouse movements, to move images around, to set and read, and to execute multiple "threads" at the same time. With all these elements, it's possible to write Pong in the game engine.

Here's an early screen shot of the game engine in action.

Welcome!

Welcome to the Sweetness blog. Candy is a game engine I've been working on for a few years now and am ready to make public. Keep an eye on this page for more info as it becomes available.

Thanks!