Sign in to follow this  
Nathan2222_old

Modifying an open source game engine for your needs:Where should I start

Recommended Posts

Nathan2222_old    395

Hi all. 

I'm new to the forum so my question.

At first, i wanted to create a gta style game because i loved it so much. Searched the web for information and i gathered as much as i could. Game engines was a real pain because none were meeting my requirements. Unreal, unity, blender game engine, Bethseda, source engine and even cry engine. Cryengine did come really close but it had some problems. 

1. the unknown license

2. the face that i don't get the source code

3. the fact that cryengine 3 is more optimized than 2 thereby not allowing for really big open world games because of floating points accuracy.

 

SO which engine did i find, the younger not so popular sister of cry engine, TORQUE 3D. It had almost all what i needed without the crazy license and access to the source code. Now, after going on search the net leave for awhile, watch dogs demos came. I'm watching them as I'm writing this. It is supercalifragilistically awesome. My needs increased because watch dogs has so many things i haven't seen torque do so please i would really want to modify this engine to perfection(almost) and use it.

I can't really seem to find c++ tutorials or maybe i haven't searched enough. I want to modify the torque 3d engine to be really good because it has some faults with  the AI, lip synching, the way plants look water physics and physics is really a must for me.

I am not sure where to start but i have this image gotten from the game engine architecture book. Unfortunately i don't and can't afford the book, yet.

Can someone please point me in the right direction.

Thanks.

 

Share this post


Link to post
Share on other sites
reloadead    1795

What PeterF and 3Ddreamer said is very true, so I won't go into more detail than what they already said.

 

It's kind of hard to judge if you're new to programming or not due to the vagueness of that in your post. I'f you're new to programming, you should really sharpen up that skill first before you want to dive into existing game engines and alter them for all the reasons (and more) already stated.

 

In my opinion, the best thing you can do, provided you do have a proper programming knowledge is perhaps not to jump in a fully fledged game engine, but take a render engine and extend on that with the things you want/need. This is a pure speculation, but with the time you're going to invest in making a full fledged game better by adding or altering stuff (and very likely break stuff), it's probably worth more your time and effort to freshly build upon said render engine.

 

Take a look at Ogre3D or Horde3D. They're both opensource and have plenty of resources to get you started. I would personally go that road instead of learning an entire engine and break it down.

 

Good luck though :)

Share this post


Link to post
Share on other sites
DejaimeNeto    4221

Well,

 

It looks like you want to modify a C++ engine without prior knowledge of C++.

 

If that's the case, you'll need to get a grasp on C++ first. This will probably take weeks of really hard work (or months without classes or a good book).

But tutorials won't cut it; you'll need a better resource. Try to search wikibooks for a good C++ programming one.

If you already know C++, great!

 

1 - The second thing to do is to define what you need that the engine can't do. Write down the names of the features, or descriptions. You really need to do this step, if you can't name and describe your needs you probably don't know exactly what you want; nor if the engine can do it or not.

 

2 - Then you should describe why the engine can't do what you want. You'll probably discover some could be done in the engine.

 

3 - If even after this there's still missing features or capabilities you can go ahead and edit the code for the engine.  If you really gone through step 2, you'll probably know what code you need to edit.

 

Out of curiosity, could you tell us at least one thing Torque3D can't do that you need?

Edited by dejaime

Share this post


Link to post
Share on other sites
xenobrain    706

Okay lots of points to address here.

 

Regarding CryENGINE:

 


1. the unknown license

Free for noncommercial, negotiated for commercial, with provisions for indie games.

 


2. the face that i don't get the source code

Most things you would add would be in the Game layer anyway.  Also, in CE3 most systems are separated into discreet libraries and interacted with through somewhat COM-inspired abstract interfaces, so it's possible to swap some functionality with your own implementations in some cases as long as you program to the interface.

 

 


3. the fact that cryengine 3 is more optimized than 2 thereby not allowing for really big open world games because of floating points accuracy.

64x64 sqkm is generally the recommended maximum size of a terrain in CE3.  San Andreas was 36 sqkm.  You've got a massive team to fill all that space with content, do you?

 

As for Torque3D, nice engine actually difficult to make work for a GTA clone.  No asset streaming.  This can be worked around a bit by cleverly chopping the world to make the zoning load screens happen in logical places, but imposes some restrictions on level design.

 

I will also point out your complaints about lipsync and AI are off base though, lipsync quality is determined by the quality of your dataset and your character rigging. 

 

AI development can be assisted by some built in state machines, goal system, communication system etc provided by some engines, but that don't inherently mean that having those features (or not) makes the difference between "good" and "bad" AI, it just speeds development.

 

Anyway, have a look at the [url=http://gritengine.com/]Grit Engine[/url].  An open source engine designed specifically for large streaming worlds.

Edited by xenobrain

Share this post


Link to post
Share on other sites
Nathan2222_old    395
Hi people. 
 
I was too blown away by what i saw in the watchdogs video that i forgot what i wanted to ask.
 
@PeterF: I do know how to program but not C++. Unfortunately i started with VB.NET and can make simple programs, dabbled with "some" C# and when i decided to use visual C++, i couldn't find anything because everytime i clicked debug nothing shows and that really didn't help. 
Is codeblocks any good cuz visual C++ doesn't seem natural.
And it won't take me years to learn C++. I learn pretty fast. My estimation is anything from 6 months to 18 months depending, it could be less.
Even if it is horribly complex, my needs won't let me not to really tweak the engine because of what i want. I am ready to learn anything so far as it will help me in this aspect but i can't buy books because i ...
 
@Rld: Um where would a render engine come in.
 
@dejaime: Torque can do almost all i want with the exception of lip synching except you have any video showing a lip synched game made with torque. Now, while torque can do most of what i want, it doesn't seem to do how i want it. For instance, if you check videos, you will see the plants looking unreal and that doesn't loo right to me. Water physics in torque is really not that good, in fact i was advised on their forum to use the triton wake generator for anything water related because torque's water physics system isn't that good. Comparing the triton wake generator water to the water i saw in the watch dogs video is like comparing a bicycle to a power bike, i.e. they both do it but one looks better. SO i will have to work on that.
Another thing is cloth physics, actually, i haven't seen any cloth physics so that's that.
I really want everything to look very good, like really and cryengine could do that but it has it's problems. 
 
@xenobrain: Are you sure its 64x64 and not 8x8 or 6x6 because when i asked on their forum, the response was that anything after a 4x4 world would start behaving really weird (physics failing etc.) and since we don't have access to the code like torque, there is no way of changing that. The said this problem wasn't there in cryengine 2 but came in cryengine 3 because of how demanding the crysis game was on hardware so.
As for torque working for my game (it's no longer a GTA clone but rather a game that looks at all the flaws in games and makes sure none of that is there, Pieces of gta, watchdogs, need for speed, splinter cell, call of duty etc.) it should be alright or better  after i learn c++ and refurbishing it. 
 
Like i said, i searched game engines for like a 2-3 months or more and i came across the grit engine. It's being developed by gta modders but it is so far away from doing what i need. They haven't even added npc's into the game engine, only cars. I joined their forum so.
 
As for the license, i am not so ready to call a company like that to ask for their prices when there are others around. It is said you have to show them what you have before they negotiate so imagine me making the game on cryengine 3 only to here that the license is $5,000-$100,000 because on their site they group games differently and my game will probably fall into the serious games group. Too risky.
 
The game will be for pc, using the c++ language.
 
If you checkout watchdogs videos, you will see the physics simulations i am referring to. Water, cloth, vegetation and it's fire looks a bit better than gta V's. One thing that didn't feel right was the driving, it  didn't look good. \other than that you can see things that are not as represented in gta v. hugging on streets, using of pc's, throing stones at camera's etc. Remove the hacking and the repitiveness and you've got a great game.
 
I found one video that talks about the disrupt engine and what makes everything in the game move so real because of the wind.. Watch it to the end and you will see. It starts wierldly though so please ignore the first 3- 10 minutes 
[video]http://www.youtube.com/watch?feature=player_embedded&v=V8vq07Ep8mA[/video] Edited by Nathan2222

Share this post


Link to post
Share on other sites
Tutorial Doctor    2573

If I knew C++ you can bet I'd be modifying the engine I am using which is free and open source and the license is very clear on that. 

 

I can only use the Lua scripting right now, but when I buckle down and apply myself to learn C++ this is the engine I will be using. It is called Maratis 3D.

 

As for your screenshot, I actually do think that such a look is very capable in Maratis, although it doesn't offer a lot of tools to help make it easier (you'd have to make it yourself.) I have to bake in my color and ambient occlusion before I enter Maratis. 

 

To get the water to look like that you could use an animated normal map (which I have yet to do in Maratis, although I have done animated textures to make water). 

 

Someone has also simulated fog in Maratis. As for the buildings I would use Google Sketchup (this is my software of choice hands down when it comes to environment modeling). My main hang up is all the time it takes to texture all the buildings (although I am finding a workflow for doing such a thing.) 

 

Here is a link to my showcase on what technical things I was able to do with Maratis:

 

http://forum.maratis3d.com/viewtopic.php?id=738

 

I also have other posts on the site as well with more photos. 

Edited by Tutorial Doctor

Share this post


Link to post
Share on other sites
Nathan2222_old    395

You're a really good modeler. i really like the characters.

Maratis is based on blender game engine which i plan on using. You say it can create that kind of water which torque can too but can it create the waves. The waves are important.

The UI doesn't look nice.

I'm gonna stick with torque.

 

Can somebody please watch that video in the link i pasted and tell me if it's possible to add that functionality in the torque engine, i.e. the part where they start talking about disrupt engine

Share this post


Link to post
Share on other sites
Tutorial Doctor    2573

Maratis itself can't create much (it is just an editor) but the waves, whether in torque or cry or udk perhaps use displacement maps rather than normal maps (to actually affect the geometry), unless torque has a fluid simulation system built in.

 

Maratis doesn't have this type of functionality built in, but if you were to program that functionality yourself you could pretty much make your own game engine using Maratis as a base. 

 

I am going to look into torque to see what it can do. 

 

Edit: I just checked out torque and I see it is free. The setup is a bit complicated for me. I would actually prefer Unity 3d in that case (accept for the cost to publish with Unity3D). So it seems like Torque is best for you then. 

 

Maratis does have a very easy to understand API though. Perhaps I will take some time out to try Torque later on. 

Edited by Tutorial Doctor

Share this post


Link to post
Share on other sites
Nathan2222_old    395
[video]http://www.youtube.com/watch?feature=player_detailpage&v=P60eyU7qCh8
[/video]
Watch that video and check the water, you'll see what i mean.smile.png
How hard will it be to create such AI, simulation etc.blink.png Edited by Nathan2222

Share this post


Link to post
Share on other sites
Nathan2222_old    395

Maratis itself can't create much (it is just an editor) but the waves, whether in torque or cry or udk perhaps use displacement maps rather than normal maps (to actually affect the geometry), unless torque has a fluid simulation system built in.

 

Maratis doesn't have this type of functionality built in, but if you were to program that functionality yourself you could pretty much make your own game engine using Maratis as a base. 

 

I am going to look into torque to see what it can do. 

 

Edit: I just checked out torque and I see it is free. The setup is a bit complicated for me. I would actually prefer Unity 3d in that case (accept for the cost to publish with Unity3D). So it seems like Torque is best for you then

I will be using the triton wake generator for water simulation and also physx, hopefully i can get the source codes.

No maratis and unity is too mobiley

Share this post


Link to post
Share on other sites
3Ddreamer    3826

Nathan!

 

 

Pay attention here, please! 

 

 

All that long list of things that you want for a game is going to demand a [u]team[/u].   Not only that, but you will be in real desperate need of source and version control software.  That [I]alone[/I] is going to require part time effort minimum.

 

Doing that long list of development stages you revealed here will take an individual years.  I know an expert C++ game developer who took over a decade to make something which was finished but is several years behind the times.  Contrast that with a C# expert lead programmer who I know that takes many months with a team to complete a project. You Have Know Idea the amount of hours of coding required to do what you stated is your goals.  At the typical beginner's pace of 10-50 lines of coding per day, you will be working on the same game 10 years from now by yourself.   

 

Your skills are not ready for navigating game development at a great pace, which will takes years in its own right to earn the experience.

 

I am not trying to discourage you, but a team takes years to get a craft into space, let alone unto the Moon and eventually Mars, if you know what I am saying. You are aiming for Jupiter already!

 

 

Did you really take all the advice in this thread to heart?

Share this post


Link to post
Share on other sites
reloadead    1795

The reason I initially stated that you could use a render engine is due to the fact that you give the impression that you want to take an entire game engine, tear it apart, fix and add to it what you want and put it back together again. Next to the fact that perhaps the things you want to add to an engine might not be feasable or possible in any or proper way (I don't know the source of torque by heart, so I'm not saying anything final here).

 

With the time and effort you spent on learning how the engine works from top to bottom so you don't break anything, you might as well take a barebone render engine where the graphics part is taken care off and the look and feel is largely free to your own imagining and do everything your way.

 

I'm not saying this is the best way to go, but also considering the fact that you still need to learn a lot, this might also be a better learning experience for you.

 

Look at it this way: 

I'm not a car mechanic. I know a few bit here and there, but that doesn't make it viable for me to take a car, strip it down, alter/replace what I want and put it back together. Can I do it? Probably, if I take real good care. Will it be exactly what I want it to be? Very unlikely, because I don't know every detail about the car, I don't know if I accidentally removed/altered some dependency which will cause the car to break down (or even start). 

 

Instead, I'd rather get a chasis and slowly build the car up, learning every bit I add. Add it carefully with full knowledge of what I am doing. In the end, I hopefully have what I wanted, but this time, because I took time and care about every piece, I know the car inside out and if something should break, I know where to look and how to fix it.

 

Perhaps it's something personal, perhaps you simply enjoy the breaking down part. It's all up to you of course.

 

All I can say is; Take these peoples advice, it's solid.

Share this post


Link to post
Share on other sites
samgj    400

Are you sure that what you need can't be done with shaders of scripting? You'll find that engines seen limited at first, but amazing things can be done once you start.

Share this post


Link to post
Share on other sites
ByteTroll    3035

There are a lot of other people here that have, for the most part, summed up what I am thinking.  For this reason, I will not restate their information.  With this being said, I think you need to heed other peoples warnings and take it to heart.  While I don't mean to discourage you, the fact of the matter is this: you need to reevaluate you current goals.  You say that you want to modify a game engine (that you did not code and have no knowledge of), going on to state that you have no knowledge of C++.  Plain and simple -- this is not going to happen.  It takes many man hours and huge teams of people to achieve what you are wanting to achieve.  I have 8+ years coding with C++; before that, I had several years of low-level C coding.  I (as well as most other programmers) work for 10+ hours a day.  At this rate (in a team), it would still take years to achieve what you are wanting to do.  Adding to the point of not knowing C++, you state that it won't take you years to learn C++, only a couple of months.  I don't know a single programmer (including myself) that is still not learning their language a decade after they started.

 

With that out of the way, I will offer you this advice.  You hint at the fact that you know how to program in another language.  I assume that your goal is to make a game.  My advice to you is move into mobile development.  This will teach you some things that can be applied to other languages, it can be done with a smaller number of man hours, and there is money to be made.  After you spend some time there, then move on to smaller projects.

Share this post


Link to post
Share on other sites
Nathan2222_old    395

@bytetroll: I'm not doing mobile games. That's for a future future and my expectation is to create THE GAME not just any game but until i find/make the engine that's gonna help me do that, i'll make smaller games while making the engine.

 

I dign't say that it will take me a couple of months to become really good at c++, it will take me a couple of months to learn it not perfect it and yes i know that if you don't keep practicing, you'll know less. 

@3ddreamer: What was your C++ friend creating for a decade.

@Rld: If i "misunderstood" you correctly, you may have just given me a great advice. Is this what you mean:
Rather than try to modify torque engine which will require that i read all the code and could possibly take forever, I should make an entire game engine which will not only be easier than modifying torque but i can make it as simple as i wan't to and to suit my needs,i.e. i should use a render engine such as ogre 3d as a base which would solve the rendering part of the game engine.

If this assumption is correct then which do you recommend i start with, Ogre 3d or Horde 3d:
Ogre 3d's license is perfect if i want to change it to a game engine. One problem is that it does not support dx11 but dx9. Other than that, it's perfect.

Horde 3d is smaller than ogre 3d and it's license is not that good, it also doesn't support dx11.

If you are reading this and this is what you meant, then this list below is ggoing to solve some problems, right:

Physics:
1. Physx + source code for physics engine

3. Beam Ng (car physics and by the time it's completed, everthing PS: I contacted them)
2. Custom physics engine for the game engine
3. Havok (maybe)

Sound:
1. Fmod Studio

Graphics Renderer:
1. The base which is Ogre 3d (i think it's better)

Game Engine Camera:
1. All views


Asset creator:
1. Blender
2. Zbrush
3. Gimp

Graphical Interface:
1. DirectX
2. Open GL (maybe not)

Platform:
1. Windows PCsmile.png 

Language:
1. C++ (obviously)
2. Lua as scripting language

Genre of games for engine:
1. OPEN WORLDrolleyes.gif 
2. Racing
3. FPS (maybe)


AI:
This is a problem, anyways:
1. Custom AI for engine (this will be the real AI system)
- Character AI
- NPC AI
- Enemy AI etc.
2. Universal AI Kit from torque (i'll just use it to as a reference for creating mine)
3. Tactical AI Kit from torqque (reference also)

Lighting:
1. Ogre 3d ( please tell me ogre 3d takes care of these - dynamic shadows, particles, subsurface scattering etc.)mellow.png 

World Size supported by engine:
1. 6km x 6km - 10km x 10km or more

Loading Screens:
1. For open world- NONEangry.png 
2. For Levels: Maybe

 

Others:
1. Ragdoll physicsph34r.png 
2. Motion Capture support

I chose ogre 3d instead of horde 3d. Does it support really large world rendering without loading screens when driving in a fast vehicle. and can you give any idea on how to change to dx11.wacko.png 

As you've seen the list above, it's mostly gonna be an open world game engine/racing. All the sdk's help me but just a bit. I would really like if i misunderstood correctly.smile.png

 

I know i probably haven't covered all i need so please give me pointers.

 

Finally, if i was correct then this photo becomes extremely important as it will act as a blueprint, right?unsure.png

 

I need lua as a scripting language because it's simple, small and the fastest scripting language from what i checked.

 

It will be a 3d game engine. It will need tons of c++ programming right?biggrin.png

Edited by Nathan2222

Share this post


Link to post
Share on other sites

Mmmkay.First you need to get a good understanding of the engine you are working with. And if you want to do great water you need to know your maths. Cloth physics, you really need to know your physics,

 

When I was young I had no idea how most of the programmers achieved anything. I learned though, it took a long time. I'm still learning.

Share this post


Link to post
Share on other sites
3Ddreamer    3826

@3ddreamer: What was your C++ friend creating for a decade.

 

He was creating a simulator ( Non-disclosure Agreement with me in effect here) with easier libraries and fewer of them than you want to juggle (for you the next 10-20 years) working long hours per day.  His total lines of coding is less than those for your goals and he is a great coder with decades of experience, a real pro in C++.  He has contracts currently with military and corporate giants, so this type of developer is the standard by which people will judge you - fair or not - if you attempt to accomplish huge game projects.   The C# developer is a team leader and another international connected expert, but in an unrelated field of simulation software.

 

These guys got amused when posed with dreams like mine which I had of grandiose goals not far removed from yours.  Years later I really respect these guys example which was a gentle kind of tough love on the realities in the business. Maybe they get so amused at newbies because they too had over ambitious ones several decades ago. happy.png  

 

I didn't even mention the Java simulation developer (famous in some segments of the market), an acquaintance, who found himself years delayed even with a team in working on a simulation which is less than your goals. Subsequent updates and also finishing his next simulator saw years of unexpected postponement on release, about 5 years delay for the team in the last case.  His next project, he finally learned his lesson and completed a lesser development size simulator which caused him to regain much of the damage to his reputation.  wink.png

 

Keep in mind that all three of these professional developers which I know had huge budgets toward their team and still took years to make software which was smaller than your objectives.

Edited by 3Ddreamer

Share this post


Link to post
Share on other sites
reloadead    1795


@Rld: If i "misunderstood" you correctly, you may have just given me a great advice. Is this what you mean:
Rather than try to modify torque engine which will require that i read all the code and could possibly take forever, I should make an entire game engine which will not only be easier than modifying torque but i can make it as simple as i wan't to and to suit my needs,i.e. i should use a render engine such as ogre 3d as a base which would solve the rendering part of the game engine.

 

That's exactly what I meant. Don't get me wrong, doing this will not save you time and it will still take you (or any other person) a long time before you get to the point where you want. It could even take more time, but the way I see it, because you're building it piece by piece, there is less chance of breaking an entire game engine because you changed a dependency (note that I don't know the Torque engine by heart).

 

It will still take a long time, it doesn't mean you can get stuff to work any faster than modifying an existing engine, it might work out better due to not being able to break an existing engine (other than not using it correctly or if you're planning on modifying ogre as well). The only real advantage for you is that it can reduce the amount of headache it can possibly cause by breaking the engine when it comes to production.

 

Both have their advantages and disadvantages, I will leave it up to yourself to decide what you like the most (although it seems you already did). Ogre3D is the one with the most features though.

 

I have worked with Ogre3D several times in the past and it has a great deal of features that can serve your need. The SDK comes with a sample browser that you can run and see some of the features it has. Next to what Ogre brings natively, the community has build a lot of nice stuff that can help you, just browse through the forum and you'll see some stuff passing by.

 


Finally, if i was correct then this photo becomes extremely important as it will act as a blueprint, right?

 

That imagine could serve as a reference, yes. Doesn't mean you need it all (or be able to build it all). If I am not mistaken, that's the image from the Game Engine Architecture book and that image represents the (by then) engine they use at Naughty Dog, I hope this gives you a good indication of how big and complex a game engine will be (let alone the complexity of the game itself).

 


World Size supported by engine:
1. 6km x 6km - 10km x 10km or more

Loading Screens:
1. For open world- NONE 
2. For Levels: Maybe

 

I don't know if Ogre will help you with large open worlds without loading screens, this is probably a question you can get a more proper answer to on the Ogre forums. I know it has support for scene management for open worlds, but I don't know the details about it.

 


Lighting:
1. Ogre 3d ( please tell me ogre 3d takes care of these - dynamic shadows, particles, subsurface scattering etc.) 

 

Shadows, particles. Yes.

Subsurface scattering. Probably not out of the box. Perhaps someone of the community has made it.

 


It will be a 3d game engine. It will need tons of c++ programming right?

 

Yes, every point you listed is something you either have to build yourself, or when you're using a library (like PhysX) interact with. So just the game engine itself will take you a long time to finish.

 

Word of advice:

Try making a small (prototype) game in an existing game engine (whichever you like) to just get a taste of what's to come. A friend of mine is doing exactly what you are doing now (except he wanted to make a MMORPG), but settled with an existing engine (hero engine). After a year of on and off work, he finally gave in to my advice to first build up some experience before taking on such a heavy task.

 

Nonetheless, I wish you all the luck and hope it's a great learning experience for you, whichever path you may take. :)

Share this post


Link to post
Share on other sites
Nathan2222_old    395

@Rld: Thanks, i will definitely use a pre-existing game engine so that i will know how everything works together. biggrin.png

Devlopment begins.

 

Time frame: Any time

Edited by Nathan2222

Share this post


Link to post
Share on other sites
3Ddreamer    3826

Good day,

 

 


Devlopment begins.

 

No, learning begins.  After you learn enough to debug the horrible code that your newbie self is going to inevitably create, then you are going to debug, refactor, or scrap it and start again.  After months or a year or two, then the [I]real[/I] development begins.  wink.png

Share this post


Link to post
Share on other sites
Godmil    748

Out of curiosity what dx11 features were you needing which dx9 doesn't have?

or are you just going by the fact that 11 is newer so must be much better?

Im just a little worried that you're determined everything must be perfect. Great games don't have to be perfect in every way, in fact working within some tight constraints can be very productive.

Edited by Godmil

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this