A sort of experiment...

I have this idea for a sort of experiment that I wanted to try. The only problem is I have virtually no experience in making games or with writing code. Basically my idea is to have a 3D game world but with 2D characters.

I will try to explain what I mean as best I can and my ideas of how it could be accomplished. Each character would be made up of sprites and the sprites would change depending on the angle of the character in relation to the player. This would mean that for every animation a character has there would have to be hundreds of different versions of that same animation from all different angles. These would also have to be syncronised so when the angle changes the animation flows from sprite to sprite.

One way I’ve thought of accomplishing this is to have invisible 3D spheres at the head height of each character that are serperated into sections and each section is connected to a sprite. When the sphere is on screen the game detects which section is closest to the player, its angle in relation to the player and how far away it is then plays the corresponding sprite. These spheres will need to have front, back, top and bottom defined and the sprites will have to be able to scale as the characters get closer and farther away. What I imagine is like a 2D animated cartoon or movie that you can walk around and interact with.

I realise this is a huge task and it will take a very long time to complete but I want to give it a go but as I said I don’t have any experience. I will of course start with something simple like a 3D room with a simple character doing somthing idly as a proof of concept and then move on to something bigger.

So, does anyone have any idea how this could be achieved? If so, how difficult would it be? Is there anyone out there who would like to help?

I suggest you check the game engine forum.

From what I understand about this scenario you describe it has a few serious drawbacks within a 3d game.

  • you would have to decide how many possible angels there are to view each character.
  • you would need to generate a bitmap for every single combination of possible movements for each angle.

The approach you describe is more like what was used in the original wolfenstein3d, which was back in 91/92? Since then graphics processing and 3d routines have made giant leaps in speed and visual appeal. You could fake the 2d look by removing shading and applying toon materials.

Maybe the guys over in the games forum have other ideas.

I imagine something similar to an old game titled “Privateer”. It was one of the many unsuccessful remakes (or at least sort of) of the Elite (one of the best games ever created). As a pilot of your spaceship you were approaching many different space objects, which were basically sprites generated from the 3D model. In case of Wolf3d each enemy had 8 sprites to see the object from different angles. In Privateer it was about 16 sprites or so to see also the top and the bottom of the objects.

In your case it would be like at least 64 or more sprites per object. The more sprites the more smooth the animation. I don’t think however that the objects would need to have that “invisible” sphere of yours. It’s basically a question of detecting the position of the player camera and the object and that’s all you need.

After creating the model in Blender you would need to write a script to render it from 64 predefined angles. The number will depend on you off course.

Use a billboard for displaying and then calculate the points’ angle to the user view, depending upon that choose which sprite set to use…

I believe that is how Massive works. Tons of pre-rendered cards with the image being displayed based upon some kind of angle to camera algorithm.

Is that atan2(w,h) in c++ if I remember correctly?