Jump to content

View more

Image of the Day

Adding some finishing touches...
Follow us for more
#screenshotsaturday #indiedev... by #MakeGoodGames https://t.co/Otbwywbm3a
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

Sign up now

Planning to Make a "Ballance-like" Game, seeking advice...

4: Adsense

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 Indignant   Members   


Posted 06 December 2012 - 02:06 AM

Hello everyone!

I am planning to make a game similar to Ballance. Here's a wiki link: http://en.wikipedia.org/wiki/Ballance

I have a few questions though:
1) How can I build the physics engine? Any tutorials for me to start from scratch(code a physics engine myself might mean a lot more work but also a lot more reward)? Or is using something like "bullet" a better idea?
2) How do I render the graphics with OpenGL(What classes do I need to create and where to instantiate them)? Although I can create simple shapes and apply textures in opengl, I have no idea how to render the physical models. For example, the player controled ball, should I create a class "ball" that have both physical properties(a rigid bode and have weight) and graphical properties(wood texture, surface normals)? If so, where should I instantiate it, how can I pass its coordinate, orientation to the OpenGL?
3) How do I make the game levels? I have managed to create 3D models with blender and I can export them as .map or .obj, but I still have no idea how to make them solid objects in my game so that the ball can interact with the map.

Thank you for your advice!



Edited by Indignant, 06 December 2012 - 02:15 AM.

#2 Bacterius   Members   


Posted 06 December 2012 - 03:04 AM

1) Don't code your physics engine if your goal is to make a game (unless your game has extremely peculiar physics requirements - which this one doesn't). A physics engine adds an immense complexity to your problem and is unlikely to be even remotely close in quality and performance to an engine like Bullet which has been in development for years.

2) Yes, I would make the class contain both the physics and graphics state of the ball. You feed it into your physics engine, read back the ball's new position (and velocity, if you want to do motion blur), update the graphics state with that and render the ball this way. It depends on your physics engine exactly, but you should be able to pass vectors compatibly to both the physics engine and OpenGL so that they can interact.

3) Import those objects, and tell the physics engine to consider them as walls (that cannot be moved). There should be an option somehow to do that (either with a flag, or setting the mass to zero, or something), but again it depends on what you will end up using.

“If I understand the standard right it is legal and safe to do this but the resulting value could be anything.”

#3 Indignant   Members   


Posted 06 December 2012 - 07:45 AM

Hello Bacterius!

Thanks for your prompt reply. It is very helpful. I will take a closer look at the Bullet and ask when I have new questions. Thanks!

I have a few more questions though:

1)Where should I init the physics engine?

2)Where and how to make the main loop(which is supposed to be excecuted every frame, processe user input, call the phisics engine to update position and speed of objects, and call graphics engine to post redisplay, right?)

3)Should I instantiate objects in game(eg. the ball class mentioned above) in the following main function?
[source lang="cpp"]int main(int argc, char *argv[]){ glutInit(&argc, argv); glutInitWindowSize(640,480); glutInitWindowPosition(10,10); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("GLUT Shapes"); glutReshapeFunc(resize); glutDisplayFunc(display); glutKeyboardFunc(key); glutIdleFunc(idle); glClearColor(1,1,1,1); glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); glLightfv(GL_LIGHT0, GL_POSITION, light_position); glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess); glutMainLoop(); return EXIT_SUCCESS;}[/source]

4) How can I pass object to physics engine and read it back? (I know this questions is too broad, but if you know any good tutorial/documentations please let me know. Thanks a ton!)

Your reply would be much appreciated!

Best regards,


Edited by Indignant, 06 December 2012 - 07:53 AM.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.