Mobius Engine Project General Discussion Formerly known as: ITT: Engine Project Proposal Discussion
#106
Posted 06 March 2012 - 05:37 AM
#107
Posted 06 March 2012 - 06:03 AM
- What kind of build system will be used? Will there be some sort of premake solution that can generate different kinds of projects for different platforms, or will there be separately maintained projects?
- Will the STL be used? Boost? Many games avoid the STL or Boost because more highly optimized and use-specific code can be custom-written for the game engine.
- Will a math library be brought in or custom-made? (GLM was brought up earlier)
- Will a custom memory manager be needed?
- Is OpenGL the graphics library of choice? How about GUI APIs? APIs for editors and tools perhaps.
- How will fonts work?
- Which model/animation formats will be supported?
- How will input be handled? Which library or libraries will be needed to handle all forms of input?
- Debugging tools? AntTweakBar is useful.
- How are resources loaded in and handled by the engine? How does some high-level code (such as script or GUI interface) load in a renderable mesh?
- Will strings be allowed or forbidden in the engine? GUIDs?
- How are objects serialized? Binary serialization? XML? JSON?
- What form of script binding will the engine use? Lua, javascript, etc.
- How do systems operate and interact? Message-driven and/or event-driven?
- What is a game object? Is it a bunch of components? What are the core components that need to be implemented for pre-alpha?
- Where is the game loop? What does it do?
- Will any systems need to be multithreaded? (common candidates are resource loading or rendering; threads where "jobs" can be queued and worked on)
- Overall, what does the engine architecture look like? Is it layered? Is it based on a series of managers (for graphics, sound, etc.)? Does everything talk through a core? Or do systems communicate with messages?
Note that what also needs special consideration when choosing low-level APIs is that it's a goal of this project to be multi-platform, so the platform layer of the engine has to be able to run on all supported platforms using all of the listed APIs.
#108
Posted 06 March 2012 - 09:25 AM
I know that first comes a lot of stuff, but I'm following this throughly and well I must admit I like the whole concept/idea of having an engine made by the community for the community.
#109
Posted 06 March 2012 - 03:18 PM
p.s. Wwise still handles music a bajillion times better than fmod lalalala closing my ears and I can't hear your argument.
#110
Posted 06 March 2012 - 03:59 PM
Knucklesdood, on 06 March 2012 - 06:03 AM, said:
- What kind of build system will be used? Will there be some sort of premake solution that can generate different kinds of projects for different platforms, or will there be separately maintained projects?
I'd opt for cmake here. Trying to maintain separate build files for each platform would be a pain in the ass.
Quote
- Will the STL be used? Boost? Many games avoid the STL or Boost because more highly optimized and use-specific code can be custom-written for the game engine.
This is one of those things that deserves a bit of discussion on its own. STL's iterators and vectors (which really, are just dynamic arrays at the end of the day) can be nifty, but may be worth implementing as a separate light weight array class that provides the same functionality. Boost is within the realm of stable now days, and may be worth looking into to assist with threading at the very least (as well as possibly JSON or XML parsing).
Quote
- Will a math library be brought in or custom-made? (GLM was brought up earlier)
I don't see any need to write a custom math library when something like GLM already exists, and will generally fulfill most if not all vector math needs (and can be extended for cases where it doesn't).
Quote
- Will a custom memory manager be needed?
Would be nice I think. In the long run, if we want scalability, we'll be needing a memory manager that can handle allocating and deallocating resources in a fairly efficient way for the purposes of streaming content much later on down the road, to allow for larger levels.
Quote
- Is OpenGL the graphics library of choice? How about GUI APIs? APIs for editors and tools perhaps.
OpenGL will be the graphics library of choice. GUI, editor, and tool APIs are things that need to be discussed.
Quote
- How will fonts work?
- Which model/animation formats will be supported?
- How will input be handled? Which library or libraries will be needed to handle all forms of input?
- Debugging tools? AntTweakBar is useful.
- How are resources loaded in and handled by the engine? How does some high-level code (such as script or GUI interface) load in a renderable mesh?
- Will strings be allowed or forbidden in the engine? GUIDs?
- How are objects serialized? Binary serialization? XML? JSON?
- What form of script binding will the engine use? Lua, javascript, etc.
- How do systems operate and interact? Message-driven and/or event-driven?
- What is a game object? Is it a bunch of components? What are the core components that need to be implemented for pre-alpha?
- Where is the game loop? What does it do?
- Will any systems need to be multithreaded? (common candidates are resource loading or rendering; threads where "jobs" can be queued and worked on)
- Overall, what does the engine architecture look like? Is it layered? Is it based on a series of managers (for graphics, sound, etc.)? Does everything talk through a core? Or do systems communicate with messages?
These are all things that need to be discussed still. At least some ideas should be thrown out there for consideration.
Personally, I'm a fan of having a series of managers. But ultimately, the biggest factor that'll influence the engine architecture will be what threading approach we take. On that note, it'd be pretty awesome if we could handle issuing calls to OpenGL on a separate thread (which is more or less what constitutes a "multithreaded renderer").
Quote
Agreed.
EDIT: One thing I've been looking at, are different GUI frameworks that could make it easier to develop GUIs for the engine. One that comes to mind is Awesomium, which allows for GUIs to basically be written with a combination of HTML and javascript, and even allows for browsers to be embedded within a game. They offer a non-commercial license. Something similar to Scaleform would be kinda cool too, since it'd basically allow people to create UIs in flash, and directly export a SWF to the engine for inclusion with a game. Any Open Source alternatives that can provide similar functionality would be pretty awesome.
#111
Posted 07 March 2012 - 06:50 AM
Gen, on 06 March 2012 - 03:59 PM, said:
Well, Awesomium like you said, is free for non-commercial stuff and for cheap indie companies and I think that its capabilities are just perfect. HTML5, JS, CSS and AS3 is just the perfect combo for creating UI's to a web developer, and not just that... It actually renders stuff using WebKit and that makes it even better along with its multicore-capability if needed. I'd vote for it, unless there is any other open source alternative with the same features.
#112
Posted 07 March 2012 - 02:58 PM
#115
Posted 07 March 2012 - 05:13 PM
#116
Posted 08 March 2012 - 10:17 AM
I'm kidding
#117
Posted 08 March 2012 - 10:59 AM
Knucklesdood, on 06 March 2012 - 06:03 AM, said:
- What kind of build system will be used? Will there be some sort of premake solution that can generate different kinds of projects for different platforms, or will there be separately maintained projects?
- Will the STL be used? Boost? Many games avoid the STL or Boost because more highly optimized and use-specific code can be custom-written for the game engine.
As far as the buildsystem goes, I'd be willing to pitch in and help maintain CMake scripts. I'm pretty good at it, and my work can be seen in the open source Lugaru and ProSonic projects on Google Code. It's flexible and lets you generate project files for various IDEs and makefiles for Linux, Mac OS X, and Windows.
I'd recommend trying to use standardized libraries because we can take advantage of well-tested code that we know works. Being able to maximize code reuse through the STL and the Boost library kits is probably a good idea. It also opens us to using C++11 features that may be helpful in developing the engine. Finally, using these libraries mean that static and dynamic analysis through clang, valgrind, and gdb will be extremely useful for debugging purposes because if issues crop up from usage of those, we can catch and fix them quickly.
#118
Posted 08 March 2012 - 05:26 PM
Conan Kudo, on 08 March 2012 - 10:59 AM, said:
Knucklesdood, on 06 March 2012 - 06:03 AM, said:
- What kind of build system will be used? Will there be some sort of premake solution that can generate different kinds of projects for different platforms, or will there be separately maintained projects?
- Will the STL be used? Boost? Many games avoid the STL or Boost because more highly optimized and use-specific code can be custom-written for the game engine.
As far as the buildsystem goes, I'd be willing to pitch in and help maintain CMake scripts. I'm pretty good at it, and my work can be seen in the open source Lugaru and ProSonic projects on Google Code. It's flexible and lets you generate project files for various IDEs and makefiles for Linux, Mac OS X, and Windows.
I'd recommend trying to use standardized libraries because we can take advantage of well-tested code that we know works. Being able to maximize code reuse through the STL and the Boost library kits is probably a good idea. It also opens us to using C++11 features that may be helpful in developing the engine. Finally, using these libraries mean that static and dynamic analysis through clang, valgrind, and gdb will be extremely useful for debugging purposes because if issues crop up from usage of those, we can catch and fix them quickly.
Maybe we should have a recruitment thread somewhere.
Also, that would be very awesome.
#119
Posted 30 March 2012 - 06:39 AM
A character (doesn't need to be animated), in a 3d location (maybe NOT Green Hill? Just suggesting...). You can move the character and jump. If you jump over some ridges you can reach a goal and get a "Act Completed" sign.
There, we keep it simple and we focus on the aspect that we're making something for games. Just implement what's needed for the above, and then plan out each new release with a demo that has something new for the engine to support.
#120
Posted 30 March 2012 - 11:07 AM

00