🔒 Locked
Engine development
Advertisement
Original Post
Is it really that difficult to find people who are like-minded? It's been a few years now that I've been thinking back and forth, done designing, and tried to learn about 3D and physics simulations. Sure, creating a new engine is a difficult task, but I do feel a bit sad and abandoned T_T *sob* Not to mention that many already existing engines are either a complete mess, or are geared towards high-end 1.21 GW computers powered by plutonium (mwahahaha, Back to the Future reference ^^). So I've felt the need to create a simple, straightforward engine in C for quite a few years. But I guess the weak link here is that I'm not a programmer T_T Even if I try I don't manage to do much complicated programming, and mathematics really isn't my strong side either. So I guess I'm preconditioned to have a difficult time. Anyway, this post doesn't really amount to a hill o'beans, I guess I just needed to rant a bit. Just to make it a bit more appropriate for a forum ^^, have anyone else had similar frustrations or hardships (newb/pro alike)? [Edited by - robinfox on August 17, 2007 5:40:07 PM]
Quote:Why do you want to write an engine? And why on earth do you want to write it in C? :-/
Original post by robinfox
Is it really that difficult to find people who are like-minded? It's been a few years now that I've been thinking back and forth, done designing, and tried to learn about 3D and physics simulations.
Sure, creating a new engine is a difficult task, but I do feel a bit sad and abandoned T_T *sob*
Not to mention that many already existing engines are either a complete mess, or are geared towards high-end 1.21 GW computers powered by plutonium (mwahahaha, Back to the Future reference ^^).
So I've felt the need to create a simple, straightforward engine in C for quite a few years. But I guess the weak link here is that I'm not a programmer T_T Even if I try I don't manage to do much complicated programming, and mathematics really isn't my strong side either. So I guess I'm preconditioned to have a difficult time.
Anyway, this post doesn't really amount to a hill o'beans, I guess I just needed to rant a bit.
Just to make it a bit more appropriate for a forum ^^, have anyone else had similar frustrations or hardships (newb/pro alike)?
(I guess those questions sound a bit challenging, but I do think that if you were to answer them, it would help the folks here provide better advice and/or feedback.)
1) Why do you want to write an engine?
First (back in 2001) is was because I was fed up with all the games right then, and I still am quite fed up with the mainstream crap. The gaming industry is slowly turning into a clone of Hollywood, which I find truly disturbing.
As time went by, and I slowly began to learn more about game development, and engines and so forth, I began to become disappointed to the engines too. so far Irrlicht is the best free engine there is, but I thought any commercial engine can beat it in terms of design. Although I'm not quite 100% content with Irrlicht either.
The main point is not graphics, on that point I always wanted to create a very modular/scalable engine, so you could use whatever system you want (OpenGL, DirectX), and include the level of detail you want. What I am most passionate about is creating an engine and an SDK that is simple, clean, and doesn't give you headaches. I always wanted to make it free, to help further indie development, but I guess that if I ever get to actually making it together with someone, I wouldn't mind making it "free for personal use only", as it would be quite lengthy work, and they probably would want some reward for it ^_^
I also wanted to include physics and a few other simulated sciences. It also woulnd't necessarily support any of the popular formats used by many engines, instead I would either create my own or modify existing ones, to create a set of standard formats used by the engine. You could always create plugins later on, to allow the use of other formats. The engine would also include tools to help in creating content, etc.
I simply want to create a well-designed, simple, and clean engine, so even if you're new to game development and programming, it shouldn't be too difficult to learn how it works. Guess there are other things too, but don't know qutie how to explain it ~_~
Perhaps imagine it as Half-Life 1 (graphically), only a bit more detail, but the main features would be in the behaviour and physics. I'm not a fan of bloated graphics. I'm a renaissance gamer, or what I should call it, I'm much more into content and gameplay.
2) And why on earth do you want to write it in C? :-/
Em...exsqueeze me? Why on earth would you ask me that!?
I find C to be the cleanest, most robust, and by far the best programming language. One programming language cannot do everything and be best for everything, but I do find C to be the best option. I do not understand the OOP/C++/C#/C.net whatever hype, not one bit. If I do some programming, it's going to be either C, Lua, or Assembly. Period.
and the compiler would be either TCC (Tiny C Compiler) or GCC.
First (back in 2001) is was because I was fed up with all the games right then, and I still am quite fed up with the mainstream crap. The gaming industry is slowly turning into a clone of Hollywood, which I find truly disturbing.
As time went by, and I slowly began to learn more about game development, and engines and so forth, I began to become disappointed to the engines too. so far Irrlicht is the best free engine there is, but I thought any commercial engine can beat it in terms of design. Although I'm not quite 100% content with Irrlicht either.
The main point is not graphics, on that point I always wanted to create a very modular/scalable engine, so you could use whatever system you want (OpenGL, DirectX), and include the level of detail you want. What I am most passionate about is creating an engine and an SDK that is simple, clean, and doesn't give you headaches. I always wanted to make it free, to help further indie development, but I guess that if I ever get to actually making it together with someone, I wouldn't mind making it "free for personal use only", as it would be quite lengthy work, and they probably would want some reward for it ^_^
I also wanted to include physics and a few other simulated sciences. It also woulnd't necessarily support any of the popular formats used by many engines, instead I would either create my own or modify existing ones, to create a set of standard formats used by the engine. You could always create plugins later on, to allow the use of other formats. The engine would also include tools to help in creating content, etc.
I simply want to create a well-designed, simple, and clean engine, so even if you're new to game development and programming, it shouldn't be too difficult to learn how it works. Guess there are other things too, but don't know qutie how to explain it ~_~
Perhaps imagine it as Half-Life 1 (graphically), only a bit more detail, but the main features would be in the behaviour and physics. I'm not a fan of bloated graphics. I'm a renaissance gamer, or what I should call it, I'm much more into content and gameplay.
2) And why on earth do you want to write it in C? :-/
Em...exsqueeze me? Why on earth would you ask me that!?
I find C to be the cleanest, most robust, and by far the best programming language. One programming language cannot do everything and be best for everything, but I do find C to be the best option. I do not understand the OOP/C++/C#/C.net whatever hype, not one bit. If I do some programming, it's going to be either C, Lua, or Assembly. Period.
and the compiler would be either TCC (Tiny C Compiler) or GCC.
Quote:
Original post by robinfox
But I guess the weak link here is that I'm not a programmer T_T
Quote:
Original post by robinfox
I find C to be the cleanest, most robust, and by far the best programming language.
So... you're not a programmer, but you know which language is the best?
It's a minor point to your post, but if you're not a programmer, your job is to identify a feature-set and give direction to the project. The progammers decide what language/tech to use to meet your needs. That's how the game works. People who don't know programming (or just aren't great at it) shouldn't be making tech decisions, that's the route to evil.
Anyway, there are plently of modern engines that are almost completely moddable and offer the basic feature sets you desire. Half-Life 2's Source engine, Crysis, EA's RTS engines, etc. The quality of the graphics is up to the artist to provide. Modern engines can run much faster with low-rez graphics and you'll get the retro feel without the retro code.
I think you are erroneously conflating engines and games. Just because the game looks and feels like HL2, does not mean that the engine can only produce HL2 clones. An engine is a tool, what game you make with it is in the designer's hand.
-me
As a follow up, your post seems confused. You are talking about it like it's a technology problem (but you admit you don't understand the technology). I think what you are griping about is the usability or modability of a few existing engines that you have tried to use.
Could you provide more detail about what you've tried to do but couldn't? It could be you just haven't looked in the right place.
-me
Could you provide more detail about what you've tried to do but couldn't? It could be you just haven't looked in the right place.
-me
1) why do you want to create an engine if you're not a programmer?
Well, that's basically the story of my life. Whenever there I don't find something I need, I want to create it. In this case an engine. One game I've been designing is a space simulator quite different from the current crap. One of the things I'm programming for that game is a HDL emulator, capable of emulating various hardware such as computers and analogue devices. The space sim is much more realistic than most mainstream games, and to explore the solar system you will actually have to learn to use computers, as the spaceships use computers/controllers for many things.
So I do know a little programming, but nothing advanced. I'm a million-skills person, I know a little about everything, but seldom very much about one thing. Same thing with programming. Not that I'd have trouble learning if I'd find a decent school. I just haven't specialised in anything else other than design and structurising.
2) Are there features you find missing in existing engines and moddable games? If so, what are they?
* well-designed structure
* regular, clean, and simple
* modular and scalable (used to work on this)
* a modular and fast universe engine with many scientific fields, geared more towards high speed even on slower computers without sacrificing too much realism
- solid mechanics
- fluid mechanics
- nuclear physics (radiation, reactions, etc.)
- macrophysics (astral bodies, gravity, etc.)
- chemistry (properties, reactions, etc.)
- and a few other minor fields
* hardware emulation (which I'm working on at the moment)
- digital devices
- analogue devices
* high-performance realistic engine for low-end systems
* a body system where you can sculpt the body you want for your character, instead of just having the limited option of female/male (which pisses me off)
* ldclod system (Large Distance Continuous Level Of Detail) (used to work on this)
* single coherent universe instead of maps/levels (working on this)
* phonetic system (working on this, being somewhat of a linguist and all)
* level-less RPG (used to work on this)
* active environment where you are just one part of the game, the universe can take actions on it's own without input from the player (used to work on this)
* character system for personality, behaviour, etc. (used to work on this)
* animations in programming code, instead of keyframes or other system
I guess there are many more I just can't remember right now ^_^
Well, that's basically the story of my life. Whenever there I don't find something I need, I want to create it. In this case an engine. One game I've been designing is a space simulator quite different from the current crap. One of the things I'm programming for that game is a HDL emulator, capable of emulating various hardware such as computers and analogue devices. The space sim is much more realistic than most mainstream games, and to explore the solar system you will actually have to learn to use computers, as the spaceships use computers/controllers for many things.
So I do know a little programming, but nothing advanced. I'm a million-skills person, I know a little about everything, but seldom very much about one thing. Same thing with programming. Not that I'd have trouble learning if I'd find a decent school. I just haven't specialised in anything else other than design and structurising.
2) Are there features you find missing in existing engines and moddable games? If so, what are they?
* well-designed structure
* regular, clean, and simple
* modular and scalable (used to work on this)
* a modular and fast universe engine with many scientific fields, geared more towards high speed even on slower computers without sacrificing too much realism
- solid mechanics
- fluid mechanics
- nuclear physics (radiation, reactions, etc.)
- macrophysics (astral bodies, gravity, etc.)
- chemistry (properties, reactions, etc.)
- and a few other minor fields
* hardware emulation (which I'm working on at the moment)
- digital devices
- analogue devices
* high-performance realistic engine for low-end systems
* a body system where you can sculpt the body you want for your character, instead of just having the limited option of female/male (which pisses me off)
* ldclod system (Large Distance Continuous Level Of Detail) (used to work on this)
* single coherent universe instead of maps/levels (working on this)
* phonetic system (working on this, being somewhat of a linguist and all)
* level-less RPG (used to work on this)
* active environment where you are just one part of the game, the universe can take actions on it's own without input from the player (used to work on this)
* character system for personality, behaviour, etc. (used to work on this)
* animations in programming code, instead of keyframes or other system
I guess there are many more I just can't remember right now ^_^
Quote:
Original post by Palidine
So... you're not a programmer, but you know which language is the best?
It's a minor point to your post, but if you're not a programmer, your job is to identify a feature-set and give direction to the project. The progammers decide what language/tech to use to meet your needs. That's how the game works. People who don't know programming (or just aren't great at it) shouldn't be making tech decisions, that's the route to evil.
I want to do game programming, even though I don't know much at the moment. And I I don't know which language is the best, just what I find the most usable. I don't like C++, C#, or C.net. C has always been the langauge I've tried to learn, and now working in. I did a little QBasic and Pascal back in the early days, but that's far behind. I'm not looking for someone to be my slave, but for someone to work together with, and then I'll learn as I go.
Quote:
Anyway, there are plently of modern engines that are almost completely moddable and offer the basic feature sets you desire. Half-Life 2's Source engine, Crysis, EA's RTS engines, etc. The quality of the graphics is up to the artist to provide. Modern engines can run much faster with low-rez graphics and you'll get the retro feel without the retro code.
The lowest end of the window would along the lines of a 700MHz 32MB VRAM computer, are you expecting me to belive HL2 and Crysis would provide decent framerate for such a low end computer? If so, then good work Valve and Crytek. But I'm not looking to make a mod. Maybe if the original HL1 code became open source, then maybe.
Quote:
I think you are erroneously conflating engines and games. Just because the game looks and feels like HL2, does not mean that the engine can only produce HL2 clones. An engine is a tool, what game you make with it is in the designer's hand.
-me
I do realise game and engine are two different things ^_^
I may not be an expert in programming, but I still like it, and don't think I'll let everyone else get all the fun in creating an engine <_> ^_^
There's a right use for every programming language, and for C, it's not engine development (At least not anymore). Even if you prefer the procedural over the object oriented paradigm (and there are actually valid reasons for that, although I'm not sure if yours are the right ones), use C++. You can write procedural code in C++, just like you can with C, but you won't be writing it in a language that is mostly obsolete. Using C++ will give you namespaces, templates, a real "bool" type, enums, no typedef on structs and a ton of other great stuff. You don't have to use classes to benefit from these.
That said, there are actually pretty good reasons why you should use classes. You say you want to write an engine that is "well-designed", "clean" and "simple". While classes technically are nothing but syntactic sugar, they can help you a lot in accomplishing these goals. If you don't like classes now, it's probably because you haven't fully understood their potential.
That said, there are actually pretty good reasons why you should use classes. You say you want to write an engine that is "well-designed", "clean" and "simple". While classes technically are nothing but syntactic sugar, they can help you a lot in accomplishing these goals. If you don't like classes now, it's probably because you haven't fully understood their potential.
Given the feature-list you specified with the low-end PC requirements and your beginning programming knowledge, you're target game/engine is very unrealistic. It would take an army of experienced programmers years to develop that type of engine. You have to remember that if you're striving for realism, chances are you'll be calculating a lot of data to simulate "real" feelings, which translates out to costing more CPU and ultimately requires a faster processor. You may want to consider starting out very small than working up to something of that magnitude, otherwise you'll (most likely) continue to flip-flop and never get any project actually finished.
Quote:
Original post by shwasasin
Given the feature-list you specified with the low-end PC requirements and your beginning programming knowledge, you're target game/engine is very unrealistic. It would take an army of experienced programmers years to develop that type of engine. You have to remember that if you're striving for realism, chances are you'll be calculating a lot of data to simulate "real" feelings, which translates out to costing more CPU and ultimately requires a faster processor. You may want to consider starting out very small than working up to something of that magnitude, otherwise you'll (most likely) continue to flip-flop and never get any project actually finished.
Not THAT real, belive I know, it's tedious, tedious work. All of those features doesn't have to be fully implemented, it's just what I usually think about day in and day out.
heh. that's quite a list. =)
Some of those features (fluid dynamics, chemistry) can't really be done in real-time on all but the most high powered machines if that's the one and only thing the whole computer is doing. Those are super-computer type problems. =)
Otherwise that feature list composes a state-of-the-art list. Many of those items aren't in any existing game because people haven't figured out or are only beginning to figure out how to do them fast enough or with a clean enough interface to be in a game.
So i think when you mean "retro-minded" you really mean "future-minded". And when you mean "low-end system" you mean "systems that don't exist yet". [smile]
I think you should continue to delve into programming more. It'll make you happier to know that the stuff you want is what a lot of people are focusing on for hot new features =)
-me
Some of those features (fluid dynamics, chemistry) can't really be done in real-time on all but the most high powered machines if that's the one and only thing the whole computer is doing. Those are super-computer type problems. =)
Otherwise that feature list composes a state-of-the-art list. Many of those items aren't in any existing game because people haven't figured out or are only beginning to figure out how to do them fast enough or with a clean enough interface to be in a game.
So i think when you mean "retro-minded" you really mean "future-minded". And when you mean "low-end system" you mean "systems that don't exist yet". [smile]
I think you should continue to delve into programming more. It'll make you happier to know that the stuff you want is what a lot of people are focusing on for hot new features =)
-me
Quote:
Original post by Palidine
heh. that's quite a list. =)
Some of those features (fluid dynamics, chemistry) can't really be done in real-time on all but the most high powered machines if that's the one and only thing the whole computer is doing. Those are super-computer type problems. =)
Otherwise that feature list composes a state-of-the-art list. Many of those items aren't in any existing game because people haven't figured out or are only beginning to figure out how to do them fast enough or with a clean enough interface to be in a game.
So i think when you mean "retro-minded" you really mean "future-minded". And when you mean "low-end system" you mean "systems that don't exist yet". [smile]
I think you should continue to delve into programming more. It'll make you happier to know that the stuff you want is what a lot of people are focusing on for hot new features =)
-me
That completely depends on the level of realism you're aiming for. In my case, very low level of realism. I'd be out of my mind to even think of doing highly realistic simulation of such things in real-time O_O
Quote:
- nuclear physics (radiation, reactions, etc.)
- chemistry (properties, reactions, etc.)
Whoa :) I think you're targeting systems such as this one ;)
Seriously though, these things are on the verge of impossibility on current consumer level hardware. Much less in realtime.
Quote:
* high-performance realistic engine for low-end systems
Those two are unfortunately mutually exclusive.
Quote:
* a body system where you can sculpt the body you want for your character, instead of just having the limited option of female/male (which pisses me off)
This has nothing to do with the engine. The character is just an art asset.
Quote:
Original post by robinfox
So I do know a little programming, but nothing advanced. I'm a million-skills person, I know a little about everything, but seldom very much about one thing. Same thing with programming.
No offense, but this might be your actual problem :) A full game engine is a very complex piece of software, and requires a substancial amount of experience and expertise in the field. I would suggest starting with something simpler. Modding an existing engine is a good start, as has been mentioned.
And, please, do yourself a favour and forget about C !
Quote:
Original post by Yann L
Whoa :) I think you're targeting systems such as this one ;)
Nope, not at all.
Quote:
No offense, but this might be your actual problem :) A full game engine is a very complex piece of software, and requires a substancial amount of experience and expertise in the field. I would suggest starting with something simpler. Modding an existing engine is a good start, as has been mentioned.
I know, this IS the problem T_T
Quote:
And, please, do yourself a favour and forget about C !
Please, do yourself a favour and don't insulting me like that T_T O_O Joke about my fat mother, say I'm gay, newb, noob, flame me. But FFS, don't insult me! No offense though.
Quote:
Original post by robinfox
Please, do yourself a favour and don't insulting me like that T_T O_O Joke about my fat mother, say I'm gay, newb, noob, flame me. But FFS, don't insult me! No offense though.
What ? *confused*
It was just a recommendation, take it or leave it. C is an extremly obsolete, and frankly quite bad programming language. Many much better alternatives exist today for tasks as the one you are after. Of course it can be done in C (everyhing can be done in C, since it's turing complete), but expect a lot of sleepless nights and headaches. You'll get a much smoother experience if you use something like C# or Python, especially as a beginner. Using C is asking for trouble. Even professional programmers aren't touching it with a ten feet pole anymore, unless they're forced to (legacy code, targeting a very constrained platform without C++ compiler, or similar).
I happen to love C ^_^ and wouldn't touch anything else with a ten foot pole, except Lua, Assembly, or my own programming language ofcourse. A little PHP won't hurt either, but I rather use Lua.
I just get told that so often, it's become a grave insult to me T_T English isn't the best language there is, but I still don't go around telling everyone to start talking Finnish instead.
I just get told that so often, it's become a grave insult to me T_T English isn't the best language there is, but I still don't go around telling everyone to start talking Finnish instead.
Quote:
Original post by Yann L
Whoa :) I think you're targeting systems such as this one ;)
"BlueGene/L is a revolutionary, low-cost machine..." [lol]
Quote:
Original post by Yann L
And, please, do yourself a favour and forget about C !
Edit: Just found out that my definition of pleasure has changed.
To address your questions, how to code an engine:
Your goals are unrealistic. Code a game and learn to isolate commonly used functionality (the usual stuff like window setup, image loading etc. etc.) into a library (or a few), which can eventually be a code base for an actual engine for your second or third game.
If you like graphics, you could also scrap the idea of game programming (for now) and code a few demos. Even 2D (as in "not using 3D hardware") demo coding is a lot of fun (blood rain, plasma, fire, star field...). You don't have the coding overhead of a full game and can still build your skills up to a level where you can build your dream game. As always, this takes time and dedication.
Still, you should at one point look into Object Oriented Programming. It's a great method of abstraction and will be very useful for large-scale games. It's also possible to use OOP in C with structs and function pointers.
[Edited by - Konfusius on August 17, 2007 6:29:05 PM]
Quote:
Original post by robinfox
I just get told that so often,
Because it is true. Use it if you like it, but be aware of other possibilities. A programming language is a tool, nothing more, not a girlfriend ;) Technology evolves, and so do computer languages. Compared to more modern languages, C is error prone, clumsy, isn't expressive, doesn't offer a lot of abstraction, and is incredibly inefficient in project and code organization.
In your list of target points you mentioned:
Quote:
* well-designed structure
* regular, clean, and simple
* modular and scalable (used to work on this)
This is recommendable. However, C is one of the last language to choose if these goals are important to you, since it represents the almost exact opposite of them.
A lot of us have gone through C here (and Pascal, Basic, or assembly). I also liked it back then. Today, I cringe if I see C code somewhere. Just take a look around for alternatives: C# or Python are the usual candidates. Maybe also Java or C++. While not the best choices either, they're usually still better than plain old C or (*gasp*) ASM. If you want to be more adventurous, Objective Caml or Haskell can be interesting options.
You don't have to throw C right away (although I would certainly recommend doing so), but you might be surprised by what you find.
Topic Locked
This topic has been locked by a moderator. New replies are not allowed.
Sign in to reply to this topic.
Advertisement