Advertisement

Help! I'm looking to start developing a 3d open world simulation type thing.

Started by June 24, 2023 05:39 PM
21 comments, last by Geri 1 year, 4 months ago

There's two kinds of answers to this:

1 - Assuming you have the talent for it, you have 10+ years of intense study and practice ahead of you, learning programming, graphics programming, procedural content generation, physics, 3d modelling and texturing, animation, etc. The internet is full of books and tutorials though, so it's “merely” a matter of putting in the hours. Anyone serious about this would start at much simpler projects and work their way up, but 10 years should get you ready to begin this project. You probably know this already though, so it's not very helpful ?

2 - This has already been done, so if you don't care about implementing everything from scratch yourself, you can spend a short time learning an existing engine like Unreal or Unity, find some sample projects or packages in their respective assets store, and extremely quickly drag'n'drop your way to having a character walking around a 3d world that you can place your own objects in. If you apply yourself, you can have this running by the weekend. Then you can continue to play around with world editing, and look into specific tutorials for when you want to add your own elements. Start here

If you like open world scene, you might consider CryEngine. CryEngine is famous for building wide 3d open world especially of natural scenes. There is voice saying that CryEngine outperforms Unreal and even lighter-packing Unity at rendering speed.

None

Advertisement

Brian Sandberg said:
10 years should get you ready to begin this project

This number seems about right based on my personal experience, perhaps a slight underestimate. I've been writing C++ code for about 18 years and ever since the beginning I wanted to do something like the OP. I am just now getting to the point where I could do something like the OP wants in my own engine. The learning curve is immense if you want to do it from scratch like I did, but you will emerge a world-class engineer.

The other path is to use something like Unity/Unreal which can get you up and running in a few days and shield you from the bulk of engine complexity with ready-made systems for graphics physics and sound and lots of free assets to choose from. You still need to know how to program, which can still take 5+ years of education and practice to not be terrible at it. It took me about 10 years of rewriting code until I developed my skills enough to have code that I didn't hate 6 months later, and that is with spending 20+ hours a week for years on personal programming projects.

This image I made illustrates conceptually the mountains you have to climb in order to do what you want to do:

Notice how you can't even see some of the mountain peaks you have to climb until you climb others to gain vantage. It's hard for you or me to conceptualize just how much work is actually involved in creating a big game. You may think “I can do thing X in 3 months”, but you haven't even thought about some other thing Y you also need to do which may take another 3 months (Y is an “unknown-unknown”). As a result, short timelines slip and you end up spending way more time than you anticipated.

Aressera said:
get you up and running in a few days

I would like to point it out that he can do the entire engine within a few weeks from 0, if he doesn't tries to make everything to be a state of art technology, just loading objects, putting them to locations, drawing them with textures, writing a simple aaabbb collision code, moving the camera, doing some very simple methods of character animation, sprite rendering, text rendering, particle system for effects, lights.

The problem is, overwhelming majority of people are lazy even to learn the basics of programming and computers (gcc - if, variables, functions, pointers, cycles) and they go to moan and scream in front of the wall for months, till someone gives them a WASD flying engine which they can control in some glorified script language, where they think: OH NOW I AM ALMOST DONE.

Due to lacking all type of basic knowledge, they not realizing that this was about 1% of the problem, and the rest of 99% is still left to be done. And they already made their task at least 5x more harder, because now they have to shovel the poop in some garbage crapware which they have absolutely no control of, and not being able to do anything with strange bugs which will occur from the environment, not being able to do certain things which they would like to, etc.

This is quite of a Z gen thing, where they get angry and even spit on your face if you try to teach them just for 5 minutes about what the logic operators are, because they expect some gamedev environment to sedate them just like watching some cat videos on youtube. Their ego is in the skies as well, it cant be that they suck, to avoid the loss of face, lets praise the underachievement, and text other losers on chat rooms till the never finished (or never even started) game writes itself somehow.

There are some things canot be learned from youtube tutorials, and developing games is one of these things. These map building videos are more harmful than helpful, because they inspiring then to do clowning with a fake self confidence that has nothing behind it just ego, instead of actual working on something and understanding what they are doing.

(I know, because i was living from these people for a decade by writing game makers for them... But i always tried to grab this problem by the neck, and offer the jedi-side of solutions in the shape of game makers or game maker environments).

Geri said:

Aressera said:
get you up and running in a few days

I would like to point it out that he can do the entire engine within a few weeks from 0, if he doesn't tries to make everything to be a state of art technology, just loading objects, putting them to locations, drawing them with textures, writing a simple aaabbb collision code, moving the camera, doing some very simple methods of character animation, sprite rendering, text rendering, particle system for effects, lights.

Maybe you're a far better programmer than me, but that sounds a bit optimistic. It took me about 3 months just to write a relatively simple DirectX12 API and I had already programmed in DirectX 11 and 9. Most of the time was spent just wrapping my head around it. Even if he's using something simpler. There are a myriad of things he will have to implement for an open world game.

Gnollrunner said:
but that sounds a bit optimistic

Its not optimistic, its what i have experienced. When i initially wrote my old opengl engine in 2006 (only just a few weeks after beginning to learn C language), my first attempts took a week. Then i scrapped it, because i realized it was a garbage that i wrote. Then i rewrote it, that took maybe 2 or 3 weeks, at the end everything worked as i planned to. Loading models, putting them to cordinates, cloning them, automatic texture caching, animation, camera code, lights, anim, sprites, texts, ground rendering (textured + colored height map). And some character handling features as well, like, to tell a character to walk to a given point with a given speed. I even added a few effects such as optional bloom and motion blur and i added audio support which i initially forgot.

This was totally fine and working, and even if i dont do any technical updates to it, it could have been used as is (and it was used like that).

But i was not satisfied with it, like it was limited to load up to 300k polygons in total only. I was far from being a good programmer, i didnt even knew about malloc just yet, which was one of the part of the problem, but it still worked fine. (Of course there are more than one type of programming talents. Knowing cutting edge technical stuff scientifically well is one sort of talent, but being able to write what you want no matter what, is also a talent… i think i have the second one attached to my isekai skill card).

My computer had 128 mb ram and a voodoo3 back then, so this was totally fine for the specifications of the time, even if it was far from being cutting edge, it used like 40-50 MB ram. It would been totally enough to do ANY game i wanted and it looked relatively good.

But i wanted something that scales better, so after i learned malloc, i had to redesign it, and i bought a more modern radeon 9800 graphics card and added vertex buffer object support and shadow maps and such, meanwhile maintaining backwards compatibility. This took a lot of time and the complexity flew away eventually, the code base grew from a few 1000 lines to a few 10k. This is however NOT necessary to make a game or game engine, i just decided to employ more modern technologies, and keep up with the current trends of that era. Some of these could be just simply avoided nowadays, as the raw muscles of modern computers are far stronger. When i initially wrote the thing, it even had to run on 200mhz-ish computers, you obviously doesnt have to make such extreme optimizations if you are coding todays.

I think when you quoted an example of an overcomplicated an still somewhat experimental platformspecific api (dx12) which doesnt even have widespread support and doesnt used outside of the world of AAA games for ms platforms, you are just proving my point, as i have recommended not to use state of art technology, learn the basics and use simpler solutions instead of clowning around.

Advertisement

@Geri I don't want to get into a back and forth argument. I'm sure you can get something on the screen in a few weeks, but I don't think most people can build anything that's nearly ready for open world usage in that time. That requires things like loading and unloading of terrain, and LOD. If you want a character, you need skeletal animation and sphere/capsule to mesh collision. Then you will need at least one rigged and animated model.

Maybe if you're pasting together a lot of existing libraries you can speed that up, but at some point, you aren't really writing most of the engine (not that it's really important). In any case something like Unreal includes all that. Unless you have some very unique requirements or simply want to do it yourself, it's not really worth doing.

Geri said:
This is quite of a Z gen thing, where they get angry and even spit on your face if you try to teach them just for 5 minutes about what the logic operators are, because they expect some gamedev environment to sedate them just like watching some cat videos on youtube. Their ego is in the skies as well, it cant be that they suck, to avoid the loss of face, lets praise the underachievement, and text other losers on chat rooms till the never finished (or never even started) game writes itself somehow.

That looks quite rude to me. I don't know your age, but for sure they grew up with different things. My son grew up with pads and smartphones everywhere, including smart TV. Knowing computers is as hard for them as it was for us because everything is hidden to them, and every public things tells them about ‘no-code’, everything built-in, ‘we-do-it-all-for-you’, while it was hard for us because we had to dirty our hands and understand what's under the box.

You cannot put that to their fault. It's more what big companies wanted to create: everyone needs visual studio while we can't use 5% of it correctly. This is the same for MS Office. Windows hides all important stuffs to users while keeping things hard for a normal user to try understand what's happening. Everyone is happy to have something running in few clicks. Many game companies are rushing to use UE or Unity. We're all happy to use Google based smartphones.

So my belief is that we helped things to be like that.

Why would a young spends hundreds or thousands hours to learn something that they can do in few clicks ? I believe that our dads would say the same about us when they wanted to teach us how a car is working under the ground. What we wanted to do is drive the car, not understanding how to change the wheel, oil, or check that the engine is not overheating…

Just my 2 cents.

_Silence_ said:
You cannot put that to their fault.

Its their fault.

_Silence_ said:
for a normal user

We are game developers on a game dev forum, not normal users. If someone would go out to the woods with this attitude to use a chainsaw, he would cut his dick and die right on the spot.
Interestingly if its about IT, everyone starts to jump up and down like the hobbits on the dragons wedding without consequences. But there are consequences: gen z will be the slave generation of people who understand what an array is. Just like the idiots in your example, who cant swap the battery or change the oil…. and its suddenly costs a magnitude more to be able to buy and own a car. You are just glorifying the full blown incompetence and cheering for underachievement. Anyway, i would like to meet your car repairer who cant solder up the honk, because its outside his skillset, lol :D

This topic is closed to new replies.

Advertisement