Jump to content
  • Advertisement
Sign in to follow this  
Plotnus

Game Engine Creation: What are the biggest challenges faced?

This topic is 1084 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

What are the biggest issues/challenges/difficulties faced when creating a game engine?

//copy of my post#3 for late comers so its not missed
The purpose of this question was to see what issues ore commonly faced so i can plan for them in my own design/implementation.

My goal to create an engine is just for a learning exercise, not commercial purposes.

Eg. I'd use what was stated here to decide what design patterns to use.
At this point I know that the Component and Flyweight patterns will be useful. (root scene node hierarchy, mesh data)

 

Edited by Plotnus

Share this post


Link to post
Share on other sites
Advertisement

What are the biggest issues/challenges/difficulties faced when creating a game engine?

 

Getting it to a point where you can actually create a game using it.

 

You're usually not going to have a lot to show for a game engine other than a handful of tech demos, especially during the first few months (years?!) of development, and that necessitates a lot of self-motivation. And unless you have some concrete goals in mind and a realistic scope for your engine, i.e. what kind of game(s) it's designed to be used on, features you want it to support, etc., development can likely linger on aimlessly because you never consider it "ready". That's why it's often recommended that one focuses on developing a few games first, and having the engine fall out of those based on commonly used functionality.

Share this post


Link to post
Share on other sites

Thanks for the input.

This is just for a learning exercise, not commercial purposes.

What issues did you face in the implementation?

The purpose of this question was to see what issues ore commonly faced so i can plan for them in my own design/implementation.

 

@zipster I see, so the danger of feature creep. I take your post as advice to have a realistically defined scope.

Edited by Plotnus

Share this post


Link to post
Share on other sites

One thing that a lot of "hobby engines" ignore is the toolchain / the real-world workflows of each individual user.

An engine needs to be user-friendly for all of it's clients, which includes:
* gameplay programmers
^ most hobby engines focus on this area
* AI programmers
* animation programmers
* graphics programmers
* network programmers
^ most hobby engines hard-code some solutions to these areas, instead of making flexible/extensible systems.
* level designers
^ most hobby engines have a terrible tool for this.
* 3D artists
* texture artists
* lighting artists
* UI artists
* effects artists
* animators
* musicians/composers
* sound engineers
^ most hobby engines completely ignore these clients!

The "hard part" is knowing how all of these people will be doing their jobs, and creating a workflow that keeps them happy and fits well with your engine.
Building the engine first often results in shitty workflows
-- Undetstand the toolchain first, then build and engine to match.

 

I personally wouldn't think of that being fully true. Most hobby engines are probably just about the same level as an indie project with an inhouse engine. You probably don't have a large enough team to build custom tools for all of that. So you typically build for what you know is the most likely.

 

Currently... I have a few plans.
A. TCP connect Blender to the game engine. Probably going to be a pain to do. Maybe not. If not, then life is good.
B. Separate tool chain. Reuse as much as possible. Level editor may use Sony's ASF if the documentation is a little better. Or may do it from scratch. Animations, and Models are custom fitted for the engine, and a plugin has been made for blender. Engine only uses Ogg and Thea for sound and video. Everything else? Formats already exist. Tools can be what ever you want.

 

Right now... I think the hardest part is trying to find a game framework system that works. My goal was to make it where entities can be split into tasks so they can be updated asynchronously with a scripting language. And allow it to be easily modified.

 

I thought about using an entity component system. But I quickly threw it out when I realized how limiting it actually was. And also setup is more tedious than people give it credit.

 

Adding new systems means you need to make some way to update it in the game. A number of systems will be created with only one or two things actually using it. It's not a one thing tackles all system.

 

I eventually decided to trade for GameObject-Component. With a specialty object for Level scripts. When the gameobject is created, it takes from a predefined archetype from file, creates it and registers what needs to be updated every pass. And what waits for event callbacks. It works great! Now came to finding a way to thread it!

 

I've thrown out code for this so often, and have a spiral filled with plans of attack. I origionally wanted as much of the engine in lua as possible. But then I realized that depending on the complexity of the game you are designing, it won't work well. Not to mention full Lua makes threading ridiculously difficult.

 

So... I threw out about 5,000 lines of code in one instance, another 1400 in another.

 

Now I'm looking into other options. Such as spawn a thread with a lua state attached to it, and treat Lua as script only. Swap to Angel Script. Etc.

 

I don't really have the resources, or the know how to do what big-daddy engines can do. I read through some of their code for ideas. But some of the sheer complexity makes it difficult to map out exactly what they are doing.

 

It's grown so frustrating, that I just might game logic single threaded.

 

Rendering. Resource Loading. Audio? All easy compare to the framework.

Edited by Tangletail

Share this post


Link to post
Share on other sites

You probably don't have a large enough team to build custom tools for all of that.

I didn't say you have to build custom tools for all that, but you do need to plan the workflows.
If you've got one artist and they want to produce models in Blender, textures in Photoshop and animations in Motion Builder, you need to build your engine around supporting these existing tools. If instead, an artist joins your team and you say "I've got an .obj importer!", they'll immediately turn around and walk back out the door laugh.png

 

e.g. The artist that I've paired up with for my current game is a die-hard XSI fanboi, so our engine supports using XSI as a modelling tool, material editor, rendering/lighting preview, scene editor and animator smile.png We also have things set up so you can export from XSI into the game while the game is still running for quick iteration.
 
Most hobby engines don't even have one artist on their team, so they have no idea what the content-creation workflow for their first game is going to be... So they create an engine, start making their first game, try to recruit people... and then... try to solve the content workflow issues that suddenly appear.

As well as answering "How do I write gameplay code?", you need to be able to answer "How do I create UI's?" and "How do I import a skinned mesh?", etc... Unfortunately this is often catch-22, as you want to tailor the answers to those questions to the talents and preferences of your content-creators, who you don't have yet.

So if your first game with the engine is going to be a one-man game, then first you've got to learn how to design levels and create art, and then create the engine around your own workflow preferences for those tasks.

Edited by Hodgman

Share this post


Link to post
Share on other sites

The biggest challenge is writing the tools and level editor to make the engine actually useful.

 

Writing an engine itself isn't actually difficult.  Its been done so much there are books and tutorials out there that it becomes just a case of following the recipe and adding your own space.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!