Designing a game engine...
Members - Reputation: 508
Posted 20 September 2010 - 04:40 AM
The C4 engine itself, while of an extraordinary design and containing some unique features (like their new terrain and some other ingenious stuff), it is not really ready for any game without a lot of tailoring and add-ons (for example it does not have a foliage sub system). I own that indie license since a long time ago, and C4 clearly has come a long way, but it did it on quite a slow pace and it is hard to say when the features I would need will be supported.
While this seems fit for a full team developing a game full-time, I think for me it is more suitable to make my own.
In addition to this, I have some interesting ideas which I want to try out regarding the architecture of the engine and C4, Ogre and others don't implement them.
Members - Reputation: 206
Posted 23 September 2010 - 02:41 AM
I've used many engines and C4 is one of the best written as the code is so clean and easy to understand (this may be a reason for the slow progress as everything is done to a high standard). It's a good engine to learn from, although other engines are better for other reasons (prototyping, scripting, licensing, etc)
Members - Reputation: 508
Posted 23 September 2010 - 02:45 AM
Anyway, let's please stay on the topic, as it is clear to me that I want to learn how to program a lot of things by developing a game engine and a game, and not just the game itself, especially the hardest part, that is, the rendering/scene management part.
Now I'm studying terrain rendering methods, and I'm almost sold to geo clipmaps, but the problem is that I found out Carmack's megatextures are inspired by clipmaps, but are not really clipmaps, but are better, and I cannot find any resource related to how they do it (if it even exists, or it might be a company secret). Do you know any whitepaper about that?
Members - Reputation: 277
Posted 05 October 2010 - 06:53 PM
I think your best option if you want to complete something is define goals or a feature list and stick with it and once they are done you can add extras. I would probably start with working out the core components that make up an engine and put some thought into how they will link together.
The biggest task I've found so far is the Renderer and it's one of the most crucial, so I advise doing a lot of research and browsing this forum for information on how others have gone about their systems. Abstracting the Renderer isn't overly difficult, you just need to work out what resources (VB/IB/Shaders/Textures/Vertex Decl/etc) need abstracting and how your renderer interface will operate. Theres an article on gamedev about making an API independent renderer interface - it'll help you a bit I think.
As for libraries try find open source or free ones that will help save you time. For example, I don't plan on writing my own network or physics engine I will use an external library.
Members - Reputation: 508
Posted 05 October 2010 - 07:07 PM
Since my last posts here I've been researching a lot about what algorithms, techniques, 3rd party libraries and such I could incorporate in my engine and it's going pretty well so far. I have written a lot of interfaces, making sure the engine is modular and portable, but I have not implemented those interfaces yet (just what I needed to clear the screen with a color and have some keyboard and mouse input), and most of them are not even complete.
After some research on terrain rendering techniques and such, I've switched focus a bit to the content pipeline, as I want to nail down a general content flow from the software an artist would use to my game.
I also find very useful to keep a blog (or a diary or whatever) about my progress where people can read what I do, it's very good for motivation as it helps you somehow keep track of your work (for example even if for one week you did almost nothing as you are working on a very hard task, you can still look at your diary entries and say: "wow, look how much I've realized so far" :) ).
Members - Reputation: 134
Posted 14 February 2011 - 03:59 AM
I had to say that I read your article in it's entirety and think it was very well written and I love the whole "well, duh" attitude behind writing it. I already know someone I NEED to send this to!
Writing a game and extracting the engine is the only way to make something useful - if you lack experience.
It doesn't need to be a fully fledged game with great assets and interesting mechanics, but it must fully exercise the engine. If you design a tech demo that doesn't reflect real use then don't be surprised if the engine turns out to be poorly designed in the areas the tech demo didn't cover.
The fallacy of such an approach is frequently evident by many "engines" with pretty tech demos that never seem to grow into games.
You know yourself that you need experience to guide design. The designs you made at work would not have been possible had you done smaller scale design beforehand. Design is an iterative process (both during one project and between different projects), you cannot immediately jump to the deep end when you lack experience in a given domain.
Writing the game will give you this experience.
Members - Reputation: 104
Posted 01 May 2011 - 02:18 AM
In the past couple of weeks I started the (huge) task of designing a game engine from the ground up. I have read a couple of books that were good and I learned something from each one, but still the task proves very difficult. I am trying to use UML to design it, but it is so big that it looks impossible to get almost everything down at design stage.
Just in case you havent looked at , I`d suggest looking at Jason Gregory`s game engine architecture
Do you have any advice as how I should approach designing such a big piece of software? I did software designs before for various projects at work, but none was so complex as this one. Also, it is quite hard to identify use cases, giving this is not an end user application, and I never designed a middleware before, so any input will be appreciated.
That depends on what you want to get at the end , I will not say do a game not an engine
but I must say , it is better to desisng your engine/middleware by considering the outputs you target
That might save you time in future by avoiding unnnessary refactoring
Members - Reputation: 102
Posted 01 May 2011 - 12:15 PM
XFX ATI Radeon 5770 1GB GDDR5
ASUS M4A89GTD Pro USB 3.0
CORSAIR XMS3 4GB 1600MHz
WINDOWS 7 ULTIMATE 64 Bit