Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Savanna Sam - Flying Giraffe!

A topic by Max Did It created 57 days ago Views: 311 Replies: 12
Viewing posts 1 to 11
(1 edit) (+1)

This is the first game project I've started after taking a break from making games for several years.

For a while now, I had this idea of a cartoon giraffe flying a comically tiny airplane stuck in my head. At last, I sat down and drew a character design:

Going at a breakneck pace!

I like how "vertical" the design of this character is. It's an unusual silhouette for anything airborne. I liked the character, so I proceeded to create a 3D model based on it:




Now that I have the 3D model, I want to try and make a game with it!

(Very rough) Game Concept

  • I'm thinking of a game where you fly down a linear level, similar to Starfox/Lylat Wars.
  • I'm imagining the game as a twin-stick action game: You control the airplane with one stick and the roll of the plane with the other. Basically, you can do barrel rolls freely and orient the plane the way you want.
  • I'm not sure whether the player themselves can shoot, it might be interesting for the game to be about avoiding obstacles instead, flying through obstacle courses where you need to position and orient yourself correctly to make sure you don't crash into anything.
  • I want to try and make this game a browser based game. I think it would be interesting to see what's possible on that platform.

Let's see how far I'll get with this. Wish me luck!

I’ve been busy to become reaquainted with the animation and rigging system of Blender and have managed to create a working rig for my giraffe pilot!

Savanna Sam character rig inside Blender

With this, I’m now able to create poses and animations that I can use in my game code. So, I can already move around in my game interactively, which is pretty neat:

But not only that, as mentioned in my first post, I want rotating the character to be an important part of the movement. And that already works, too:

I’m especially happy with the little dynamic animations I can already create in the game. I really like the wobble the head of the giraffe does when they stop moving or rotating. It’s a small detail, but it adds a lot in my opinion.

As you can see, there isn’t much else happening in the game yet, but I’m working on that! :-)

Okay, I’m bit for bit adding the parts that are going to make this a game.

For testing purposes, I’m generating random red boxes that the player flys towards. Not very spectacular, but it alread gives the player a reason to move in order to evade the obstacles.

Then, I’ve added the cannon-es library for collision detection. I’m not using any of the physics simulations right now, I only want to know if the giraffe is hitting any obstacles.

And last but not least, I’m using three-nebula to display particles. Currently, they create the star particles when the player is hitting anything.

The green wireframe boxes are the collision shapes, I’m rendering them for debug purposes.

It’s very much a work in progress, but it’s making progress!

(3 edits)

I’m developing the game to run in browsers, to make sure it’s quick and easy to access it. Another step to make sure it reaches a broad audience is to implement control schemes for different platforms.

Controlling Savanna Sam with mouse and keyboard

I expect mouse and keyboard to be the most common control scheme for playing the game. You use the keyboard to control the airplane, while the mouse is used to let our giraffe pilot to roll into the desired direction. I’m using the browser’s pointer lock feature to capture the mouse and then to simulate behaviour similar to an analog stick.

Controlling Savanna Sam on tablet via touch screen

I myself like to sit on my couch and play on my iPad, so it just makes sense to also implement touch controls. I’ve implemented on-screen analog sticks which already work quite nicely. The analog sticks appear wherever the player touches the respective half of the screen, which makes it more comfortable to play the game, since it adjusts to your preferred finger placement.

Controlling Savanna Sam on a smart phone via touch screen

Having touch controls on a tablet means that technically, you can play the game on a phone, as well. I’ll be honest though, I don’t know if I’ll be able to design the game in a way that works well on small screens…

Controlling Savanna Sam via game pad

I was delighted to learn that you can use game pads in browsers! I’ll be honest, I didn’t know that all modern browsers support game pad input, but I’m very happy they do. This means that you’ll have the option of using a game pad when playing the game on your PC.

(2 edits) (+1)

I’ve added some basic, but important features, making this feel much more like a game already: A health bar!

The health bar(s) in Savanna Sam

Currently, the health bar is split between Sam’s health and the state of repair of the plane.

If Sam himself gets hurt, then the player loses one (or more?) hearts.

Sam bumping his head

The plane’s health is further divided into segments. If Sam hits an obstacle with the edge of his plane, like the tip of the wings or one of the wheels, then he only loses one segment.

Sam scrapes his plane

However, if Sam crashes his plane into anything dead center, then the equivalent of a full wrench is taken off.

Frontal collision

If Sam’s plane is in poor shape, it starts to leave a trail of smoke:

Should it be doing that?

And, of course, if Sam runs out of health, then the player sees a game over screen (which I am going to make prettier, I promise)

Going down!

My next step would be to implement collectable items that will replenish Sam’s health :-)

(+1)

So far, it was only possible to avoid obstacles, now there is also something to fly towards! I’ve implemented items! Another basic, but important building block for the gameplay.

The player can now collect coins, increasing their score:

Savanna Sam collecting coins

They can collect wrench items to repair their airplane:

Savanna Sam collecting wrench items

And they can collect heart items to regain health points:

Savanna Sam collecting heart items

Most basic gameplay elements are here, the next steps will be to build actual levels with the elements that are there already.

(1 edit) (+1)

I’ve added a small quality of life feature to the game. I found that the character model is often obscuring items that you are about to collect, making it tricky not to miss them.

To prevent this very basic gameplay element from being frustrating, I’ve added an x-ray shader for these elements. So, whenever the the character is in front of any of these items, a colored silhouette is rendered. This is done for hearts:

x-ray shader for heart items

for wrenches:

x-ray shader for wrench items

and for coins:

x-ray shader for coins

I think the shader works pretty well already, and it fulfills it’s purpose. Maybe a bit too thoroughly, though. In some cases, the character is full of colored shapes. Often from objects that are still quite far away and not really relevant yet.

I’ll try and optimize this. Maybe I can try and fade the effect in when the item gets closer to the player?

(+1)

this has been a fun read. Looking forward to your work!

Thank you so much! I think it will still take me a little bit of time before I can release a version that is playable in any meaningful way. But until then, I will post any updates here :-)

(1 edit) (+1)

So, I’m in the middle of implementing actual levels.

I’m currently trying to figure out how to best manage and display level geometry and objects appearing in the levels like buildings and obstacles.

I think some of my basic approaches already work quite well, like creating a file format that combines 3D geometry that is needed for the current level with placeholders that tell the game where the geometry needs to be rendered.

However, I have a good amount of work still ahead of me. At this step, some of the challenges of the perspective the game is rendered in become apparent:

  • Rendering parts of the landscape from far away requires that the landscape geometry extends quite far to the sides, otherwise the landscape ends too early on the left and the right when rendered at a distance.
  • When approaching the landscape, the parts on the left and right will vanish outside the screen quite early, so it’s important not to put too much detail into these parts.
  • I will probably need some kind of LOD system for landscape geometry and larger objects in the game. It doesn’t make sense to render an object at full detail if it is too far away and too affected by fog.
  • I will probably need different viewing distances for small and large objects. It doesn’t make sense to render a coin or an item when it is basically only a pixel large, but I don’t want large objects to pop into existence in the last second either.

There is already some early version of the level system visible in the game. Some of the problems are quite visible, but should be fixed relatively easily:

Some cosmetic problems with the early level system in Savanna Sam

When flying a little higher, the problems with the viewing distance become very apparent:

The viewing distance in Savanna Sam is too damn low!

I hope I will make some progress on this in the coming days and weeks.

(+1)

I assumed you were using Unity.

Having to write your own rendering engine for your game is pretty impresive.

Happy to see progress from you.

Yeah, I decided to not use engines like Unity or Godot that can export to HTML because I feel that these engines bring a lot of overhead with them. Even when exporting an empty scene with nothing happening, the resulting HTML files will still have a considerable file size.

I am not writing my own rendering engine from scratch though, I am using three.js, which covers a lot of the basics, which helps a lot. :-)

But, more complex features like level of detail functionality you still have to do yourself.

Everything is rings now!

I wasn’t too happy with using the x-ray effect for pretty much every item that you can collect in the game. It looked visually cluttered and could make the game a bit confusing if you constantly hat colorful shapes superimposed on your character.

After some pretty good feedback over at the Newgrounds forums, I decided to change the collectable items to be ring shaped.

I was a bit hesitant at first, since I feel that “flying through rings” is a bit of a flying game cliché, but I suppose there is a good reason why they are used so often.

With the new item design, I can turn off the x-ray shader and still have the player see where the item is, even if the character is flying in front of it.

So, coins and wrench items are now golden hula hoops and turning cogs, respectively. The new item designs in Savanna Sam

And the hearts are now heart silhouettes: The new heart item design in Savanna Sam

I was also able to solve some of the environment rendering issues mentioned in the last post, though I am still working on that part of the game.