Why so few 3D games on Pandora?


I've always wanted to try to make one, I probably will produce at least a techdemo when I get my Pandora :)


I'd love to see what it could handle
 
If I could sell my free time, I would be a very rich man. ^^ I have time but no talent for coding, so no 3D games from me, except from some graphics maybe. Of course I also want to see more good 3D games on the Pandora.
 
Actually, I found it a massive improvement over SC and BW. That said, not actually related to the graphics, more just the new and refined game mechanics - like rally mining, action queues etc. Love it.
Just what killed the hardcore TT.
I have to disagree with you there. You can call lacking the ability to select multiple units at once hardcore as well (like we had to in the Dune 2 days). I prefer to refer to it as annoying.


I still fail to see what clicking like a possessed madman has to do with strategy and was hoping that more automated features ---e.g. as seen in supreme commander--- would make it into Starcraft 2. Unfortunately, it is still a click-fest.
 
If I could sell my free time, I would be a very rich man. ^^ I have time but no talent for coding, so no 3D games from me, except from some graphics maybe. Of course I also want to see more good 3D games on the Pandora.

Once I get my Lyme disease treated, I'm going to try to learn to program again. Lyme messes with my cognitive abilities pretty badly- I bet that if I get better, I could code like a boss!


But don't give up trying to program- keep developing your art skills, yes, but don't be afraid to keep on trying with programming! You can do it :)
 
If I could sell my free time, I would be a very rich man. ^^ I have time but no talent for coding, so no 3D games from me, except from some graphics maybe. Of course I also want to see more good 3D games on the Pandora.

Once I get my Lyme disease treated, I'm going to try to learn to program again. Lyme messes with my cognitive abilities pretty badly- I bet that if I get better, I could code like a boss!


But don't give up trying to program- keep developing your art skills, yes, but don't be afraid to keep on trying with programming! You can do it :)

Ohh, that sounds nasty. Apart from chronic tiredness, my cognitive functions are pretty good, but I don't know anything about programming (except C64 BASIC and enough C to compile some sources). It's a shame, 'cause with my deteriorating motor skills and your impaired cognitive abilities we could have made one helluva team. I suspect though all the fun would come from hilarious videos of us attempting to program!
 
Actually, I found it a massive improvement over SC and BW. That said, not actually related to the graphics, more just the new and refined game mechanics - like rally mining, action queues etc. Love it.
Just what killed the hardcore TT.
I have to disagree with you there. You can call lacking the ability to select multiple units at once hardcore as well (like we had to in the Dune 2 days). I prefer to refer to it as annoying.


I still fail to see what clicking like a possessed madman has to do with strategy and was hoping that more automated features ---e.g. as seen in supreme commander--- would make it into Starcraft 2. Unfortunately, it is still a click-fest.
More micro ^^.
 
Never used it - I'll check it out, as I see it has a Windows download. Cheers


I'm just reading through Stuckie's doc. I'll also try adding in the Windows counterparts to X to his engine (and maybe see if he'll include them in the SVN). If I can get this working, I could migrate my game code over (just the framework has been developed so far)
 
I certainly intend to make 3D games for the Pandora when I finnish my engine. I havent done the complete renderer yet, its all small bits and pieces of tests, but I have learned more since then also so I plan to try to make a GLES 2.0 renderer now instead to get to try to make normal maps and wavy water surfaces, it remains to be seen how that works out though...


Im far ahead with my editor, I have basically functioning animationsystem, but only for blocks of bones, like in the early PSX era, I want dynamic vertice movement depending on bone influence and I might have solved that in theory now, Im working on that code right now. Other then that theres only some details left to do thats simple.


I also did collision detection, mostly in theory since I only tested it in 2D yet, but it should work in 3d aslo, its probably very slow though, I couldnt handle the math for the typical way of doing it...


Something I havent looked at and dont know anything about is source code laws and such, if I release all the code I do can I get in trouble for it? Can someone for ex patent my code that I did myself and sue me for using it? Are there other potential problems I havent thaught about?
 
if I release all the code I do can I get in trouble for it?
Only if you're using other peoples code and are going against the license they are distribute it with.

Can someone for ex patent my code that I did myself and sue me for using it? Are there other potential problems I havent thaught about?
Make sure you select a license when releasing the code if you are concerned about such things.


I pick really relaxed licenses if I release any code, because there's nothing in mine that you won't find similar or better in others.


Edit: Are there any threads/links for your engine. I'm obviously interested in checking my options for Hot Pursuit :)
 
Last edited by a moderator:
well you could release the source under a licence like GNU licenses or your own custom license which prevents people copying your code or trying to sell it or whatever, though you may want to seek legal advice for your own custom license.
 
There are quite a few problems with going down the 3D route. Some of these points are generalisations, and there will always be exceptions to examples, but...

  • In general, 3D games are more complicated games. Sure you can take mine sweeper, make 3D models of the mines, and view the 'world' with a camera that has a perspective projection, and you will have a 3D game, but would that actually give a better gaming experience? Probably not. When you look at a lot of 3D games, they are just bigger games.
  • Getting assets for a 2D game doesn't require and overly advanced skill set. You can either download sprites from the internet, or team up with an artist and get them to make the artwork. Don't get me wrong, a good 2D artist is just as valuable (if not more so) than a programmer, but just about everyone is an artist, as in everyone can pick up a pen and draw some form of 2D graphics. Some people are a lot better than others, but the point is you can get someone with no formal training, no money to spend on expensive software packages, not a huge amount of technical knowledge, and yet they can churn out decent graphics.
  • 3D games require (at least some?) 3D assets. It gets a lot harder to find suitable 3D models. When you combine that with the fact that for something like the Pandora you need 3D assets set up so they will perform okay on lower end devices (poly count, number of texture/parallax/displacement/relief/environment/etc. map). Sure, you still get models with no formal training that have learnt how to use 3D packages, but even good artists generally take quite a long time to knock out a decent 3D model (how long would it take an average artist to both model, skin and animate a game character running sequence?)
  • 3D brings a lot of mathematical problems with it, and can also amplify existing problems. For example, with 2D games, you can sometimes get away without doing any spatial partitioning/clipping at all, but when you start talking about rendering a skinned model, or rendering out a level with tens (or hundreds?) of thousands of polgyons in, clipping becomes a lot more important.
  • 3D often requires better tools. With a 2D game, you can often get away without much in the way of an editor. It's easy enough to work our 2D coordinates and put them into a text file (or XML etc.) and set up some sprite positions, etc. But 3D starts getting a little more complicated, you often aren't talking about a something simple like a sprite (four vertices), but instead an entire mesh, so you start placing objects based on the center of the mesh, and have bounding boxes/spheres to represent the mesh in a simple way. If you start to have a somewhat expansive world it gets boring very quickly to edit a text file, relaunch the game, find something is in the wrong position etc. so I'd say it's rather rare to have any reasonable sized 3D project that doesn't have some sort of editor (either built into game, or integrated into something off the shelves). Regardless if you write something yourself, or spend the time integrating an existing product, you can still be talking weeks (or months, depending on spare time) just to get this task done.
  • 3D is just graphics right? Not entirely - 3D games normally have 3D audio, e.g. if you walk near to a river you expect to hear the river, if you are 200 meters away from it, you probably don't expect to hear it. Audio API's obviously help with this, but it still takes work, it also means there is more data that you potentially need to start thinking about clipping out.
  • Vectors, matrices, quaternions, perspective projections, clipping, viewports, local/world/camera/clip space, transform orders, this list really could go on for a while, but there are lots of things which are commonly required for 3D games which 2D games don't need, and a lot of these things aren't exactly straight forwards. I'm not claiming they are rocket science, but to me it feels like the basics of 2D games are somewhat easy to teach yourself, but some of the topics I have listed here take either some dedicated or some training.
  • Optimization; for a 2D game, you will often find even a debug build runs at an acceptable frame rate (most of the frame time often is spent on the GPU, which is always running in optimized mode), but as you start scaling up a 3D game, a lot of things usually get thrown on the CPU, an very quickly you can find your game is running like a dog. Getting code optimized is relatively tricky, as there are so many sections to it, compiler flags, linker flags, cache coherency, memory efficient data structures, etc. On some of the main stream consoles there some pretty dandy profilers that help diagnose what is causing a game to run slowly, but on something like the Pandora you are a little more limited (sure there are some tools, and there will be a number of people who will prefer these to any of the fancy nonsense from MS and the like) but in general identifying and fixing performance issues on the Pandora is potentially going to be a bit tricky.
  • Start to finish time; of course this will vary by huge amounts from project to project, but I'd like to suggest that 3D games must generally take a lot longer than 2D games, even more so if you are having to write the entire engine from scratch too.



I could probably waffle on and list more things, but the point I am trying (in a very round-a-about way) is that rendering a 3D object instead of a 2D sprite requires a bunch more work, but not a huge amount more. But making an entire game (depending what the game is) can introduce vast amounts of problems, both from a code and art perspective.


I hope we see some cool 3D projects on the Pandora, but I will certainly be happy to see some nice original 2D projects, as a simple, polished 2D Pandora game can easily take 6 months to a year of some ones time!


Best regards,


Steve
 
Ive never looked at GPL and those things what they may be called, when I actually have something finnished I should look into those finnished licenses, I dont care what people do with my code, I just dont wanna get into trouble from someone else for doing what was intended as supplying more code examples to the world for the good of humankind...


I dont use anyone elses code, its all my own, sometimes based on others theorys explained on the internet as education. I use the glu replacement code wich can be found on the internet without any licensing anyway. So far, if I get the perspective rendering to work in shader I wont be using that specefically but in theory thats were the system comes from.


Anyway, my engine is done cos I couldnt make use of Ogre, I think I looked lightly at Irrlisht and some others, I determined it would be easier to just make my own engine my own style anyway, and it sure was :) But collision detection and suprisingly also the animation system turned out to be nightmarishly difficult, but I made it, or well I have to test the dynamic vertice animation now so it works, I just finnished the code I think, if it indeed does work...


I dont have a link or thread for my engine yet, cos I dont actually yet have an engine, I also didnt know wether I should release the code or not, but Im sure it wont be a problem so I will start a thread for my engine once its done with a short guide or something. My editor isnt 3DstudioMax or Blender, it looks plain and will be frustratingly slow and difficult to work with, Im almost ashamed of how primitive it is, almost :p Im no master coder and I wont ever be one, at the end of the day all Im concerned with is that it works at all, and so far so good.


Hot Pursuit sounds like a racing game? I have been thinking pretty much only on gameplay such as Silent Hill, Final Fantasy 12, I dont know what would be required to make a racing game feel good for ex in the way of collision detection and such, but modifying my code might be simple anyway, or I dont know how others will see and think of it, I dont code in a normal way... I dont use error handling, its all code in a single file, its short variable names and compact blocks of code to get stuff out of the way so to say... But with a seperate guide untangling the mess should hopefully be simple enough, the code in itself is certanly simple, its the easiest pure C code one could imagine I think.


My collision detection works like this, I rotate a polygon till its straight, along with the player old and new position, then its simple to check if line between old and new hits inside polygon, and rotate back the modified result, I dont remember exactly how I did it, but it wasnt all that costly in the end I think, but CD should defenitly be limited as much as possible anyway, my overall plan was to use small sectors for such processing, so that only polygons in a specefic sector your position is within get checked for a hit. That may not be a good idea fro some gamedesigns I dont know, like firing projectiles mayby, but maybe it wont be such a difficult thing to modify or replace anyway.


As for howl long time it takes to make a 3D game instead of 2D, or how much more difficult it is, for me none of that matters, I wanna make a 3D game specifically and no 2D will do in its place... Were theres a will theres a way, as long as you dont give up its only a matter of time before you find a way to succeed. And perhaps its good to not scare people with describing the difficulties ahead :p instead describe potential solutions to problems as the encounter them, the reason I started coding at all was because I heard raytracing was supposed to be easy, and thinking of how to do it I learned all the logic by myself, when I discovered that todays hardware wasnt fast enough and my skills wasnt good enough I didnt wanna stop after having come as far as I had, so I looked at open GL and I could immidiatly understand the lingo and theory, I got some polygons up and running quickly and boy was I happy! I never knew how difficult problems I would encounter in the future and if I did I dont know if I would have continued and tryed? But I knew nothing so I stumbled on and now I have almost solved everything in the end afterall!
 
"And perhaps its good to not scare people with describing the difficulties ahead instead describe potential solutions to problems as the encounter them"


Yes, I do not mean to scare! I wish everyone making a 3D game all the success in the world! The only thing I will see is the conversion rate for projects being started to projects actually being released on this indie scenes is often rather low, with 3D probably even more so! I'd love to see a few more (slightly simpler) games make it to the repo than a bunch of elaborate (very good I'm sure) ideas that never quite get finished.


That said, if you have your mind set on it, I'm sure you'll deliver us something, and I look forwards to that!


So, in summary, 3D = hard, but not impossible, given determination you can do anything!


Steve
 
I must admit, the whole 3D concept has been a nightmare to me, and my primitive raytracer basically cheated the 3D. Rotations is 3D confuse the hell out of me (as do most 3D maths), though I do have some books on the subject.


I was fretting about HP before I'd even started, and I still kind of am. In one way, I wish the vote had gone to multiplayer tower-defence, but at the same time, I still want to make this game.


The plan was similar cubed sections of GTA build up the world, and utilise some really low poly models (like 10-15 polygons) for the cars and people.


I must admit, maybe this is a question for another time, but how do you tell if a 3D object is "off-screen"? In 2D, you have your co-ords which go beyond the boundaries, but with a movable camera with FoV?


I'm kind of feeling defeatist and back down to 2D, I just don't know :(


Edit:

Hot Pursuit sounds like a racing game?
Some info on HP here
 
Last edited by a moderator:
There are different ways of rotating stuff depending on what you need, I made a rotation code thats very easy and accurate and probably very slow, I use it for moving playerposition, rotating vertices is faster with matrix multiplication, you can get the data from the rotated vertices in different ways I think if you need that.


For ex, say your caracter is turning to the left, it had 75 angle value, then new update adds -5:


glRotatef(oldVal-newVal, 0, 1, 0);


glGetFloatv(GL_MODELVIEW_MATRIX, your_matrix);


player[0]=(your_matrix[0]*vertice[0])+(your_matrix[4]*vertice[1]+(your_matrix[8]*vertice[2];


player[1]=(your_matrix[1]*vertice[0])+(your_matrix[5]*vertice[1]+(your_matrix[9]*vertice[2];


player[2]=(your_matrix[2]*vertice[0])+(your_matrix[6]*vertice[1]+(your_matrix[10]*vertice[2];


then player array will have XYZ cordinates for rotated vertice. You need to add translations, the position cordinates.


In GLES 2.0 you need to calculate the matrix values yourself, wich shouldnt be a big deal, the code you need is basically in the glu replacement code, the explenation of glFrustum on openGL reference pages should have an image with all calculations for all elements also.


I dont tell if an object is off the screen or not, I dont know how to do that specifically if its needed for some reason, but screen ranges from -1 to 1 so calculate vertices and it should yield values higher then 1 or lower then -1 for vertices off the screen. If its only about rendering then you dont have to worry about it, openGL does it automatically.


You said in the description the driving was 3D, but did you mean the actuall driving somehow or just the rendering? If the gameplay is 2D like old GTA for ex then what you do I think is create a map of cordinates for all scenery, the camera moves around that, and moveable objects have their own player cordinates that gets added to the vertices after you have processed the rotations of them. Hmm mayby my simplistic explenations only brings more confusion?


I think it works like this:


Building A have a number of vertices, since the building is to the right all the cordinates of vertices have numbers like 14,16,18 in X values for ex. Then you have enemy car at position X-10, Y-27, Z-0 for ex, its vertices have numbers that describe it from its center, since its small all numbers are like 1, 2, -2, -1 and so on, when you render this you add the enemy cars position values to the enemy cars vertice value, but not untill after you have rotated the vertices, you have a data file with all original cordinates that you reference, then you process all data in a new array for ex that then gets used in the rendering, once all vertices have locaation data its just to send it to the render buffer. To get the right location data you first need to rotate individual objects and get the updated data, add their position value in the world, and then add the camera position as well, then you start drawing all object new vertice data.
 
If I could sell my free time, I would be a very rich man. ^^ I have time but no talent for coding, so no 3D games from me, except from some graphics maybe. Of course I also want to see more good 3D games on the Pandora.

Once I get my Lyme disease treated, I'm going to try to learn to program again. Lyme messes with my cognitive abilities pretty badly- I bet that if I get better, I could code like a boss!


But don't give up trying to program- keep developing your art skills, yes, but don't be afraid to keep on trying with programming! You can do it :)
I am technican Assistant for Informatics and I learned Coding for over 2 Years. But I always get headache when I have to watch code. I never was into this abstract text stuff, I need graphical Editors to feel comfortable. ^^" I can't even keep the syntax in mind, I have other talents.


But there are enough coders out there I guess, so nobody will miss me. :D Just more people need a Pandora and we also can expect more games and maybe also more 3D Games.


Some problems of 3D games were already mentioned here. I would add a general problem to make 3D games "playable" with a good "feeling", which is not that easy I would say. Mario 64 for example is only that good because it's Gameplay is perfect, the controls are perfect, the feeling is perfect. You can easily mess up a 3D Jump'n Run but to make it right, it needs alot of polishing. Same for the Graphics. Just because it is 3D it doesn't mean it will look good automaticly. Again, Mario 64 Poly Count is pretty low but the Designers made the best out of what they've had. :) Everything looks nice, even in low Polygon count. THAT is art.


One bad example (IMHO) of an Pandora Homebrew 3D Game is this (quick port?) of the 3D Arkanoid thingy "Birquolo". It just feels wrong for me, Controls, Handling, timing, overview...stuff like that. Graphics are fine but this doesn't save the gameplay, sadly.
 
One bad example (IMHO) of an Pandora Homebrew 3D Game is this (quick port?) of the 3D Arkanoid thingy "Birquolo". It just feels wrong for me, Controls, Handling, timing, overview...stuff like that. Graphics are fine but this doesn't save the gameplay, sadly.
My first gl->gles conversion. the game was choosen based on code change requiered...
 
Back
Top