Sign in to follow this  
Scrut

Advanced Game Engine Design

Recommended Posts

Have a question if i am going down the right path.

I have a game engine working on for 6 years now. I started programming in sixth grade and was doing physics and trig in 8th grade. taught myself calculous so i could do the physics so hardcore love physics. but anyway this is a overview of my system ima not give everything away. does this resemble any system made so far, i bet someone else did it this way its easiest way and i dont know cause havent looked into it.

first 7 layers

Platform - Hardware dependent code, Data Types, Data Containers and so forth
System - OS dependant code
Mathematics - obvious
Object - Engines object layer for all objects
Module - Encapulates extendability of engine organizing everything into systems
Kernel - Cmon you know wtf this shit is
Application - Functionality to make apps and projects obviously at top

Then i have a 8th layer for extension
Scinter - user interface
Physics
Chemistry - friend thats engineer modeled fake chem and did the stitistical modeling and math for this but ima programming it
AI - all this has atm is Recurrent/Custom Artificial Neural Network that can recongifure in real time the confidence intervals/Activation function/Learning Algorithm(so can use multiple)/propagation rules(competative and full feedforward atm)
Script - Scrible based on the context free grammer of C
Graphics
Input
Sound
Networking

then for Windows and Linux i have 2 standard executables that are
Scloader - Windowed Graphical System Runtime Linker to load the game can run multiple games at the same time in one app
Scommand - Command line run time linker mainly for just setting up systems at first if you wanna avoid all the extra stuff of scloader to organize a system or if you want command line games or what ever

Then cause i have a module layer and i made all those extensions native to the system i abstracted 8th layer extension so they are linked at runtime to allow flexability then of course u can load up custom modules for ur game

then ima planning of doing addons like a music player or what ever that games or apps can load plus tools like all those fucking damn editors so fucking many

But also the application layer can also be reorganized so u can make ur own app executable if u wanna release a game and just wanna streight game and not all that extra stuff

I have a administrator module for only me of course you can image the awesome usefullness of this could do shit without premission and rights would just make it a open system which would obviously not work

But anyhow its fucking gigantic and havent made any games execpt like cell wars and little games, but done shit loads of mechanics and physics simulation

then i just at the splash screen i take a picture of the system using serialization and stream to file so to play a game just run the sof(scrut object file) and game ur game is running, this is the main way ima doing things i dont wanna make hundereds of executables

code is homebrewed except Standard template library containers
Dose it sound like ima on the right path just curious?

and ima writing a tutorial on my user interface all tutorials on this subject suck donkey balls seems ima only one who knows how to program

[Edited by - Scrut on October 12, 2010 10:43:50 PM]

Share this post


Link to post
Share on other sites
I'm sorry, but I couldn't get through your post. I'm assuming you are in high school or above, and that you live in the United States (Phoenix, AZ). If that is the case then I recommend you at least make an attempt at employing correct grammar, using correct spelling, and avoiding profanity.

Remember your audience. Right now, I guarantee you are viewed as unprofessional, young, and amateurish. In the future, consider thoroughly analyzing what you say/write before you do it.

Share this post


Link to post
Share on other sites
wtf ever dude ima change the post but ima not even close to high school and just posted really fast. do you mean you cant understand what i am saying its english are u in 2nd grade? o and did you notice ima talking to humans so wtf am i the only one that just streight up says what i mean if that has some adult language then grow up and mature cause if this site is a bunch of kindergardeners then ima out of here?

Share this post


Link to post
Share on other sites
This kind of high-level module overview doesn't really tell us much if your engine is like any other engine -- it's they way they interact and are used by the engine's different users that would determine that I guess.

Do each of the 7 (8?) layers depend on the underlying layers? Can you have an object without a module? Are these layers a conceptual convenience, or an actual seperation in the build (e.g. different libs)?

What kind of functionality does the "Module" layer provide?

Is Object a "game-object" type class, or a system-level class to do with memory manangement etc?

What's the difference between the Kernel module and the Application module?



Regarding Halifax2's post - it's true - if you want professional advice, then it's best to act professionally. If you write like an amature, you'll be more likely to be treated like one in responses.
It's not that hard to write "I'm" or "I'll" instead of "ima", or to use propper punctuation to avoid weird fragments like "its english are u" or "grow up and mature cause".

Share this post


Link to post
Share on other sites
Quote:
Original post by Scrut
and ima writing a tutorial on my user interface all tutorials on this subject

It's generally suggested that beginners not write tutorials. Leave it to experts that have researched thoroughly the possible approaches to a problem. Things like user interface design are very well understood, and while it might seem like you have made an awesome design you might want to hold off because you'll end up starting a new project later and iteratively find a better solution invalidating your tutorial.

Also that is kind of odd that you use a lot of profanity. Most children get over that around high school. Interesting.

Share this post


Link to post
Share on other sites
I pretty much stopped reading here...
Quote:
Original post by Scrut
Cmon you know wtf this shit is

... but I'm wondering how you managed to access the hardware given that your "Platform" module already takes care of that.

Anyways... this is all the information that I needed:
Quote:
Original post by Scrut
But anyhow its fucking gigantic and havent made any games execpt like cell wars and little games, but done shit loads of mechanics and physics simulation

Apparently your "game engine" is fucking gigantic and you haven't made any games. No, your not going down the right path.

Share this post


Link to post
Share on other sites
very good questions indeed sir! well here we go ill try and explain it to you im not grad student so ima use the wrong terms i know it, please do not judge my programming skills by how i word stuff.

---------

Do each of the 7 (8?) layers depend on the underlying layers?
Each layer depends on the layers bellow it, so 3 depends on 2 that depends on 1.

---------

Can you have an object without a module?
O YES of course glad u asked. if you use the scloader or scommand then ur project is forced to be placed in a module and any object if on the IObject tree or not would be in a module, but your module can load a dll with Scrut::System::CModule which is diff from Scrut::Module::CModule which is a object module for the engine.

If your project is a exe then yes you can have any object you wanted outside of a module, like a piece of trash even if you wanted, inside the project that from scruts view would be external to the engines core BUT REMEMBER that would give you some seperation on the side of functionality cause the engine loves objects and modules cause u can just impliment in your executable's project and load it into the engine on startup/load or at any point it doesnt matter it can do all that stuff. then you got the engine handling objects not in modules that that other systems in the engine can manipulate like scripting systems by cheating and using the addresses to jump where ya want instead of identifiers.

And also if you couldnt have a object without a module or forced 100% of the time into using IObject base class then thats just plain limiting and stupid.

---------

Are these layers a conceptual convenience, or an actual seperation in the build (e.g. different libs)?

Layer 1 and 2 and 8 are actually contained in additional libs, resolved at build of course, that way you can change any code for those by substitution of the .lib and can easily do a build for linux then windows with scrut.lib and scrut_linux.lib and scrut_windows.lib ya know. 3, 4, 5, 6, 7 are in Scrut.lib static linked library. and layer 8 the extensions are in a additional library. So there ya go with the seperation of the build.

But i would say its also a conceptual convenience and actually if you were to sift threw the code you notice that i did it this way so objects need not and have no access to stuff they cannot use like i wanted to make there be no way even if i messed up( wouldnt build ) for me to manipule something in the kernel to the scripting engine or anything from low level to high level without the higher level handling the interaction ya know obviously a higher level can references a value in the lower level and that would cause data from low level to manipulate higher level functioning and execution. The layers came from me designing the system abstractly and express functionality/behavior and permisions ya know and yes each layer has its own namespace so i dont clog the global namespace with everythihng plus without namespaces then i couldnt have two CModule classes( one in system layer and one in module layer ).

---------

What kind of functionality does the "Module" layer provide?
Module layer depends so hardcore on the object layer of course and extends the functionality of the system to extendable at runtime, yes i know you can load up a dll with Scrut::System::Module and allocate objects from within the dynamicly linked module, but that would require some extra code in the game cause the engine doesnt allow system to access module directly from lower level to higher level, so you would need to add that so the higher level referenes the lower level and adds the functionality. so to get around this i make module layer. really when we get down to it, it is just a library instances of factories(allocation and deallocation along with alive and dead object lists)\builders and so forth like a object library organizing your interfaces for you. but it doesnt force the objects to be used in a specific way, mearly allows a open ended number of objects to be accessable by the streaming system and by hardcode so u can by hardcoding make a call and see if a object is possable to be created or yeah if you know streaming and serialization then yeah allowing the objects that can be used to be dynamic is a must for a system that doesnt have to be coded specificly for one game, or just plain deal with to much dependency on game specific code.

---------

Is Object a "game-object" type class, or a system-level class to do with memory manangement etc?

Well here we go. all layers bellow the object layer cannot have interfaces implimented using IObject base and thats alot of system objects like threads\dlls\containers used in the system and i can go on and on. but all code in the module and stuff above object i try and use IObject base and organize stuff into systems so IObject does allow message propagation thru the systems but also yes its MAIN functionality that i was at first using it for was Memory management. But sense i use the sof files alot(serialized objects streamed to files so a Scrut Object File) i like to use IObject base alot so i can always take snap shots of the system and just load up whatever whenever i want.

---------

What's the difference between the Kernel module and the Application module?

Well i can answer this in no time. its about the level of abstraction as the entire system is abstractly organized. The Scrut::Application Layer( it is not a module btw not even close the layers are not implimented using module ) includes the highest level you can go which is Initialization\Run\Destruction. basicly i like it this way so you just use Scrut::Application::IApplication::CWindowApplication as a base for your app in your executable and just overload initialization\run\destruction methods. the kernel is more concerned with handling whats happening in the now as far as execution goes. like it has a task manager and handles the lists of Scrut::Module::CModule instances and really uses the Mediator Design pattern ya know by allow all those messages to propagate to the correct places and allows everything to live together nicely and neatly. but thats what the kernel spends alot of its time doing if you wanna get down to it.

---------

Share this post


Link to post
Share on other sites
and btw i dont expect to have my tutorial posted just thought it would be cool so was ganna give it a shot and if it was then maybe it will help someone, and yes i would not say one bad word in it, OK OK OK im sorry ill remember my audience yes i know we do not need potty mouth language sorry

Share this post


Link to post
Share on other sites
and if your just ganna talk negatively without any real point to your post then please i do not need your input. just make a new thread saying how much you hate me. but i know this project is at least ok. and i have made games, i made some small ones and alot, ALOT of simulations and i was meaning not a comercial type game or anything of that size

Share this post


Link to post
Share on other sites
I have a million dollar question - Can you make a game with this? If the answer is no - you are doing it wrong.

And yeah please improve your English if you want some serious answers. A lot of professionals from different countries visit these forums so trying to speak too cleverly can jeopardize your chances of getting them to take you seriously.

Share this post


Link to post
Share on other sites
lol can i make a game cmon man would i post this if i could not. how can you not make a game with a user interface\Physics\AI\Script\Graphics\Input\Sound\Networking then just add ur own game specific types well then yes u can make a game easy. ok i see what ur all saying without posting my code or more details ur not ganna get where with such a high level view so ill come back when i have some projects done showing how its used and ill just let you download it and reference the games code, but ill leave the engine code out of course nnot ganna give that away i dont care if it sucks i dont let people see my code ever

Share this post


Link to post
Share on other sites
Quote:
Original post by Scrut but ill leave the engine code out of course nnot ganna give that away i dont care if it sucks i dont let people see my code ever




But then how will I stealz your Ubar game engine and call it my own!!??1

Share this post


Link to post
Share on other sites
lol cmon its not uber its no commercial engine and uber would only include a special set of engines i mean cmon its the word "uber" not "amature" i said advanced cause its more high level oriented around general engine development and wanted as many people to look at my post

Share this post


Link to post
Share on other sites
Hmm, "hardcore love physics" seems a bit too naughty for this forum.

Seriously, I second many observations made by others:

- Correct grammar and a nicer attitude would allow you to get more help in this or any other forum: for example, describing something actually obscure as "Cmon you know wtf this shit is" not only shows you aren't much willing (or able) to communicate, but subconsciously translates to "you know this is shit" for most readers.

- Writing tutorials but "not give everything away" are incompatible objectives, and in your case both are bad objectives;

- Your "layers" don't seem much layered at all: for instance, "Mathematics" is normally independent from hardware and software environment abstraction layers and appropriate "Objects" presumably appear in each library or framework layer.

- Hardware dependent code is normally a solved problem if you have an operating system and a C runtime library: what's in your "Platform" layer?

- If your purpose is to brag about how good a game developer you are, the commonly accepted approach is "show, don't tell": give screenshots, descriptions and download links for your games;

- If on the other hand you want advice, the quality of the answers is limited by the quality of the questions.

Share this post


Link to post
Share on other sites
Quote:
Original post by Scrut
lol can i make a game cmon man would i post this if i could not. how can you not make a game with a user interface\Physics\AI\Script\Graphics\Input\Sound\Networking then just add ur own game specific types well then yes u can make a game easy. ok i see what ur all saying without posting my code or more details ur not ganna get where with such a high level view so ill come back when i have some projects done showing how its used and ill just let you download it and reference the games code, but ill leave the engine code out of course nnot ganna give that away i dont care if it sucks i dont let people see my code ever


Seems like you don't understand. Basic reason to make a game engine is to simplify making a game. Once you understand that, writing a game engine makes more sense.

Lets take a few scenarios :-

Can I make a game in which I would need to trigger events, activate doors, press buttons in a level, pick up objects, animate characters, blend animations, have different kinds of cameras. Or do I have to write the code for all this? What is the difference between AI and script. What does AI do and what does script do. Can I do things like path navigation or does the AI mean simple finite state machine AI.

Does your user interface support breaking the image into smaller segments of data or does it only work with few single images. What kind of font system is supported in your user interface? Is there a way to create my own font style in your code. Other than that does it support only bitmap fonts or does it also support true type fonts.

What kind of networking do you support. Can I have 200-300 clients connected at a time. In a client server model, how are you supporting prediction or is it left up to end users to worry about it.

What kind of lighting models do you support? Simple vertex lighting, light mapping, HDR etc.

If the answers to most of that is - I have to write it myself, might as well write the game before making the engine and then make it more generic and evolve that into an engine.

Share this post


Link to post
Share on other sites
I'm going to ignore all to profanity and uneducated ghetto talk... Anyway, no, you are not on the right path. From what I can tell it sounds like you are just using scripting and adding a bunch of random functions to it but to be honest you are not making yourself very clear.

That method is not direct enough. You want to make a game engine that can be used to make games. You should think of a game as a scene with props and actors then make an engine that simply renders the scene.

Share this post


Link to post
Share on other sites
Quote:
Original post by Sirisian
Quote:
Original post by Scrut
and ima writing a tutorial on my user interface all tutorials on this subject

It's generally suggested that beginners not write tutorials. Leave it to experts that have researched thoroughly the possible approaches to a problem. Things like user interface design are very well understood, and while it might seem like you have made an awesome design you might want to hold off because you'll end up starting a new project later and iteratively find a better solution invalidating your tutorial.

Also that is kind of odd that you use a lot of profanity. Most children get over that around high school. Interesting.


Even though there's a lot of sense in leaving the tutorials to the experts,
I know from own experience that writing a tutorial for yourself can be very
educating. You know; like a report you need to hand in at school.

And, slightly off-topic:
Quote:
Original post by Scrut
now you just do you and ima do me all day dudes

I think this could win a quote of the day award...

Share this post


Link to post
Share on other sites
English is not my native language, and Halifax2 (the first replier) is true. I cannot follow your post :(, no idea what "ima" is and so on. This is not the English I am used to, it is full of abbreviations and stuff, it's like chatting in World of Warcraft or something.

Also, another problem is that your posts are not structured. You say an idea, then you go to another, then you come back, it is very hard to follow. My advice here (since you are a relatively new member in this engineering community) is to first write all your ideas into some text editor (ie. Notepad), then group them by paragraphs and read it twice to make sure it all makes sense and then post it.

I will be more than glad to help you in your future, nicely written posts.

Share this post


Link to post
Share on other sites
ok sorry for the not sure how to say it but garbled post. i, notice i did not use ima, but i will put together a straight forward correctly written post once i get a project together using all the different systems of the engine. i believe one of the problems is i made haste with my post; too much too soon. and yes thank everyone for your input i actually understand what you are all trying to get across. and just keep in mind when i talk my project up that I know its not state of the art i am just saying I, not you, but I loved every moment of the process and I like my systems. but hey who care right, this is really my first time reaching this point so i will take this as a learning experience. and also my grammar and spelling are well i do not know how to stay this any other way, but by far absolutely atrocious.

[Edited by - Scrut on October 13, 2010 7:22:12 AM]

Share this post


Link to post
Share on other sites
And I aint gotta lie when I tell you im the illest
but Im probably wrong but Ill never know till im gone

They tell me dont get high, and I should try to make a living,
I tell em' imma hustler and I'd rather make killin'


sorry if i talk thuggish i forget alot of shit but i dont forget the streets

[Edited by - Scrut on October 13, 2010 8:29:35 AM]

Share this post


Link to post
Share on other sites
Quote:
Original post by ScrutHave a question if i am going down the right path.


When faced with this question I usually ask myself "WWMPD?" or "What would Master P do?" in this situation.

I tell you what he would do. He would make some demo games from the engine (eating your own dog food and all that) because if you can't make a game from the engine, nobody else will. Nothing elaborate, just some simple but playable and semi-polished games in various genres to demonstrate the capabilities of the engine. For example, make a simple platformer, fps, shooter, puzzle game, and physics game and post them on a website along with the engine code.

If you don't have some decent demo games for the engine I doubt anyone will ever care about it, and it will collect dust as Unused_Game_Engine_#986079687 on google code or sourceforge.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this