Help in creating a game engine.

Started by
15 comments, last by Spinningcubes 8 years, 9 months ago

Hello everyone, I am thinking about creating a basic game engine as my final year college project.

I ahve got 1 whole year.

I have good c/c++ knowledge with some knowledge of DirectX.

I want to ask if it is feasible to create a game engine in this short time with no deep knowledge. My group members are ready to work on this.

We don't want to create a very advanced engine but a basic engine capable of powering a basic 3D game.

Advertisement
I want to ask if it is feasible to create a game engine in this short time with no deep knowledge. My group members are ready to work on this.

.

Truthfully, what you are suggesting could take years to accomplish.

Maybe scale back your ambitions to a basic 2D game engine instead ?

I cannot remember the books I've read any more than the meals I have eaten; even so, they have made me.

~ Ralph Waldo Emerson

You need to concretely define your requirements.

You need to concretely define your requirements.


This.

The term 'game engine' is simply too broad; a few years back as part of my degree I wrote in a week or two a system which interfaced Lua with Java (course requirement on the latter) which could play sounds, draw sprites, do basic collision and have a 'game loop'.

That is technically an 'engine' - a simple, 2D engine, but with a change of graphics and a change of Lua logic it could drive another game type.


[describe] a basic engine capable of powering a basic 3D game.

See Hodgman's comment. Some tough love - if you're in your final year of college, and a professor put the above quotation on an exam, you should complain that "basic 3D game" isn't defined, and how can you possibly describe a method for implementing an undefined task?!

At your level of education, you should have learned that the first task in solving a problem is to separate the knowns from the unknowns to determine if the problem is solvable. From your description, it appears you have many more unknowns than knowns.

Particularly if you must coordinate a "team," each project task must be well defined. Later, a schedule must be put together - but you're not even close to that yet.

Write your own exam questions.

1. Describe features of a basic 3D game in your own words. Do NOT describe the game in detail. An "engine" must generically support the features you describe. This will be the "scope" of support the engine will be required to provide. [ If no-one in your team has written a complete 3D game with all the features you describe, consult with the professor, starting with the statement: "We're screwed." dry.png ]

2. For each of those features, describe in your own words what pieces of information you will need to implement that feature.

3. For each of those pieces of information, describe a method or methods to obtain that information.

4. If the information for the method or methods is known by a member of the team, list the individual.

5. If the information for the method or methods is not known by any member of the team, list the individual whose responsibility it is to obtain the described information.

6. Determine approximate man-hours for implementing all methods.

7. Meet again in two weeks to discuss how to further reduce the scope defined in step 1.

Repeat steps 1 through 7 until the total man-hours is less than 6 months, allowing for delays due to beer parties, road trips, and going out for pizza. That will allow time for additional problems to be resolved with a 50% chance of meeting the one-year time-line. biggrin.png

More seriously: a better approach may be to use the above process to write a game, not an engine. When the game is complete, abstract the code which provides the support for the GUI, physics, collision, level editing/loading/saving, scoring, user I/O, graphics options, etc., and code an engine from that abstraction.

Please don't PM me with questions. Post them in the forums for everyone's benefit, and I can embarrass myself publicly.

You don't forget how to play when you grow old; you grow old when you forget how to play.

With only a year to go and a lot of unknowns, I'd say you'd have a lot more fun and success if you started with an engine and built a game.

Look into Unity or Unreal.

If this post or signature was helpful and/or constructive please give rep.

// C++ Video tutorials

http://www.youtube.com/watch?v=Wo60USYV9Ik

// Easy to learn 2D Game Library c++

SFML2.2 Download http://www.sfml-dev.org/download.php

SFML2.2 Tutorials http://www.sfml-dev.org/tutorials/2.2/

// Excellent 2d physics library Box2D

http://box2d.org/about/

// SFML 2 book

http://www.amazon.com/gp/product/1849696845/ref=as_li_ss_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=1849696845&linkCode=as2&tag=gamer2creator-20

Depending on what you are trying to accomplish... you can do it in a year if you are not trying to make the next unreal engine. Something on the level of Polycode will be just fine. Annnd I feel for you. I find it more fun to program an engine than the game for some reason... so I can sympathize with that feeling. Just avoid doing most of the work yourself if you can. There are existing tibbits and pieces you can scrounge together for a final result.

OpenScene Graph - While I am not going to say use it for it's graphics. It has an amazing scene graph that might as well be ripped out, and stuck into something else. Along with some other tricks here and there.

Ogre3D - Graphics engine is a bit over complicated for my tastes, but she gets the job done and has been used in a number of commercial projects.

Ogg - Free Audio Codec. Most other codecs have freakin people sitting on them waiting to file a lawsuit.

Fmod - Probably the best 3D audio system. It's free for indie use up to a fee.

Bulletphysics - A really good physics system. But documentation is non-existing last I checked, and it will need quite a bit of optimizations on your end to make sure it doesn't eat up a lot of time.

Nvidia physics - Well known system. I have a personal bias against it, so I won't mention anything.

Havok - No existing documentation.

QT - use this badboy to make the editor for your engine.

my user image would probably qualify as "basic 3d game", it's taken 2 maybe 3 months for me to:

rotate 3d points relative to camera
put 3d coordinates on a 2d frustrum

conjoin those points with triangles to describe solid forms
light those triangles with flat shading so they're not all the same colour

sort triangles for rendering with painters alg (VERY retro, with "classic retro" artifacts, but simple to do.. maybe a z-buffer would be simple to do as well)

longest time: subdivide partially visible triangles so my height field isn't hilariously transparent

spend lots of time fiddling about with comfortable user input > acceleration and turning kinda stuff

spend lots of time adjusting meaningless things like colours because it's enjoyable

i spent ~2 months before that on a 2d game to define my game loop (move player, entities, check and stuff)

tbh i look at my game and seriously, i think a more knowledgeable person could knock it together in an afternoon of heavy coffee consumption. otoh, i'm not in college and don't have a college schedule, and enjoy my pace of development as exploration. flat shading is crap. but i think it's going to take many years before i do shadows.

i've seen compsci course reqs that were about the same, but they were very specific in what qualities they wished the student to demonstrate.

neither a follower nor a leader behttp://www.xoxos.net


Hello everyone, I am thinking about creating a basic game engine as my final year college project.

Yes you could do a basic game engine in your final year and maybe even a game that effectively uses your engine. Yes this would be an achievement but would it be academically suitable for a final year project?
I'm afraid not.

A basic 3D games engine can nowadays be developed from scratch using books and online resources pretty much like reading a recipe book. Lots of hobbyists do it in their spare time and nearly everybody applying for a graduate position has some form of "Engine" that they have written in their portfolio.

I'd expect you to be able to create a basic 3d engine as part of one of your course module but, for a final year project I'd expect something a little more advanced and more research oriented and a lot more focused. Maybe creating a new advanced feature for an existing engine. Or maybe just writing the renderer component of an engine and really focus on just this component. Your final year project should be more focused in one area, perhaps graphics, physics, sound, AI, world representation or gameplay scripting. Writing a full engine is like having to write lots of components but you won't be able to drill down deep enough into any one component to make it academically rewarding.


Hello everyone, I am thinking about creating a basic game engine as my final year college project.

Yes you could do a basic game engine in your final year and maybe even a game that effectively uses your engine. Yes this would be an achievement but would it be academically suitable for a final year project?
I'm afraid not.

A basic 3D games engine can nowadays be developed from scratch using books and online resources pretty much like reading a recipe book. Lots of hobbyists do it in their spare time and nearly everybody applying for a graduate position has some form of "Engine" that they have written in their portfolio.

I'd expect you to be able to create a basic 3d engine as part of one of your course module but, for a final year project I'd expect something a little more advanced and more research oriented and a lot more focused. Maybe creating a new advanced feature for an existing engine. Or maybe just writing the renderer component of an engine and really focus on just this component. Your final year project should be more focused in one area, perhaps graphics, physics, sound, AI, world representation or gameplay scripting. Writing a full engine is like having to write lots of components but you won't be able to drill down deep enough into any one component to make it academically rewarding.

I want to get into the game industry. For that i need some work in this area. I chose "engine" as a project becasue i would be able to use it in my portfolio when applying for a game development company and it will work as my final year project. As far as going for something bigger, I have cleaned a lot of things from our "engine". It is basically now a renderer. With a somewhat more focused target, I think we'd be able to create something with better quality.

This topic is closed to new replies.

Advertisement