Java-Gaming.org Hi !
Featured games (91)
games approved by the League of Dukes
Games in Showcase (799)
Games in Android Showcase (237)
games submitted by our members
Games in WIP (865)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  How much time will it take me to learn 3d game programming ?  (Read 9642 times)
0 Members and 1 Guest are viewing this topic.
Offline RKJ

Senior Newbie





« Posted 2016-08-01 06:21:13 »

Hi, I can program 2d games with ease in java and html5, but I now wanna get my hands on making 3d games but it looks scary. According to you, how much time will it take an average guy with just knowledge of programming and high school mathematics to learn 3d game programming?
p.s. - >I don't know anything about 3d.
        >All translations, rotations, scaling etc I have ever done is in 2d (canvas), which is very easy.
        > I don't know what mathematics I need to make a 3d game.
I am a self-learner. In which direction should I go and what should be my first step ?

Offline h.pernpeintner

JGO Ninja


Medals: 107



« Reply #1 - Posted 2016-08-01 10:57:26 »

3d graphics is one of the most challenging fields in computer science, because of some reasons: You need lots of math, you need knowledge about programming, about rendering architectures and engine architectures and you need knowledge about graphics pipelines and available APIs.

But 3d games aren't always about graphics programming - do you want to do 3d games? Or do you want to understand how 3d games work and program your own engine, for learning purpouses? Making games and programming a game engine are two completely different tasks...

First, I would advise you to experiment with developing 3d games on an existing engine. If you take a look at Unity, I'm sure you will get some results pretty soon, as the engine is well documented. Once you got the basic structure of a game engine, with all its components and transformations, scriptings and stuff, you can dive into the topic more deeply, if that's what you want then.

I wouldn't recommend programming your own game or game engine from scratch, until you did a first prototype with an existing engine. Why? Because it will probably frustrate you so much, that you doubt everything concerning computer science and game programming Cheesy
Offline delt0r

JGO Wizard


Medals: 145
Exp: 18 years


Computers can do that?


« Reply #2 - Posted 2016-08-01 23:06:31 »

Your never finished learning anything. Seriously. I am now 41 and i look back on my former younger 39 year old self, so young and full of piss and vinegar and so lacking in wisdom! I don't expect that to end anytime soon.

But i do disagree the the previous post. 3d graphics one of the most challenging fields in CS? What? Not even close. 3d graphics and 99.9% of the math behind it is pretty simple and not all that advanced. I would expect most people who really want to learn to be quite capable of doing so. It is mostly last year equivalent high school to first year uni level. Many of us taught ourselves this stuff for demo scene back in the old days when there wasn't even internet.  Basically vectors and matrices and understand the idea of a coordinate system and your more or less done. Even advanced shaders are not that difficult from a math perspective.

 Have no idea why people would say 3d grfx is hard advanced math. It really isn't. Navigation math with non euclidean geometry is harder and something every old navigator had to learn. Or calculating the orbits of the planets accurately enough for space probes is a bit harder. Fluid dynamics is much more difficult. 3d grfx math is piss easy.

However i do agree that it is stupid to write an engine. There are a bunch of good engines that have done a lot of the boiler plate code for you. Golden rule as a coder. Don't write code some other sucker has written for you. Every man and his dog writes a new "engine". Guess what! they never finish and 99.9% of the ones that do have a far poorer product than stuff that was around for free when they started.

If java is your thing i recommend Java Monkey Engine. Otherwise you can't go wrong with Unity and c# is not bad either. I wouldn't recommend anything with C++ or C.


I have no special talents. I am only passionately curious.--Albert Einstein
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Archive
« Reply #3 - Posted 2016-08-02 00:34:01 »

RKJ, it sounds like you are just like me. I started learning about 3D graphics on my own time a two years ago when I was still a junior in high school. (about to start college now)

If you love the material and have a desire to learn more and persevere through the struggles of creating 3D graphics from scratch, it won't be that hard for you to learn them. Add me on skype if you want to talk, I can help you out Smiley m.limits.

Also, you shouldn't be setting your eyes on creating a 3D game right now because that won't happen (frankly, i learned that the hard way). It's not like 2D graphics where it takes a small amount of time to become adept at, and you should expect multiple engine rewrites because 3D graphics are not a trivial concept.

Overall:
3D graphics can be the most satisfying and the most aggravating programming you ever do, but in my opinion, the knowledge you gain from it will help you in all other fields of game programming and will change your perspective on video game development. (add me on skype tho i love helping)

Offline philfrei
« Reply #4 - Posted 2016-08-02 02:04:16 »

JavaFX 3D is pretty easy to learn and get started. I made the following program in about two weeks after starting JavaFX. I had been using Java 2D for many years, but wanted a 3D working world as a way to test out some 3D audio code algorithms. http://www.java-gaming.org/user-generated-content/members/27722/test3daudio.jar Give it a minute or so and these rumble-producing purple cylinders will start to rise up. You can tool around the chess-board with the arrow keys and the sounds will shift in location (best with headphones).

I wrote a short tutorial to help get past some gotchas that might make it hard to get started with JavaFX. http://www.java-gaming.org/topics/getting-started-with-javafx-game-programming-for-java-programmers/37201/view.html This will get you going with the basics for a game loop and logic of graphics display. For some reason it is kind of hard to find good beginning tutorials for JavaFX game graphics. (Part of it: Java 8's version of JavaFX is vastly different than the first go at JavaFX a few years back.)
 
The 3D stuff I used in the 3D-sound-test mostly came from reading the 3D chapter in "JavaFX for Dummies" and common sense. The "for Dummies" series is not known for straining brain cells.

I think it is a reasonable way to get going quickly and still learn a lot of basic 3D concepts. However, there seem to be larger and more active communities for JMonkeyEngine, LibGDX and of course some non-Java engines mentioned above.

music and music apps: http://adonax.com
Offline delt0r

JGO Wizard


Medals: 145
Exp: 18 years


Computers can do that?


« Reply #5 - Posted 2016-08-02 03:21:00 »

Honestly dive into a unity tut. Or a blender one. You can be up and running very quickly. A day or so.

I have no special talents. I am only passionately curious.--Albert Einstein
Offline h.pernpeintner

JGO Ninja


Medals: 107



« Reply #6 - Posted 2016-08-02 08:10:31 »

But i do disagree the the previous post. 3d graphics one of the most challenging fields in CS? What? Not even close. 3d graphics and 99.9% of the math behind it is pretty simple and not all that advanced. I would expect most people who really want to learn to be quite capable of doing so. It is mostly last year equivalent high school to first year uni level. Many of us taught ourselves this stuff for demo scene back in the old days when there wasn't even internet.  Basically vectors and matrices and understand the idea of a coordinate system and your more or less done. Even advanced shaders are not that difficult from a math perspective.

 Have no idea why people would say 3d grfx is hard advanced math. It really isn't. Navigation math with non euclidean geometry is harder and something every old navigator had to learn. Or calculating the orbits of the planets accurately enough for space probes is a bit harder. Fluid dynamics is much more difficult. 3d grfx math is piss easy.

I didn't say 3d graphics is the hardest math. I said it's one of the most diffucult fields in CS, thats a difference. And I can tell you it is, because you rarely have to handle so many different resorts when developing something. You can learn math by reading, theoretically. But you can't learn software development in the same way, because you need practice in many different areas to really "get it". And that's what I wanted to say: Someone who is new to all this, will be overwhelmed by the shaders and buffer layouts and extractor patterns and gpu pipelines and memory management and stuff. I have a lot of experience with people new to this topic as I lead several lectures and courses in graphics programming and game development - and when someone is struggling with undebuggable projections, how should he at the same time learn what value types are or why the layout of his buffer seems to be strange? Even with guidance, this is hard for beginners - you yourself are either an exception or you have forgotten how it was as a beginner. I saw courses of twenties of students in this situation - it just takes a lot of a lot of time, that's for sure.

And since the thread author mentioned that he's a self-learner - I already saw a dozen of OpenGL self-learners personally....without exception they are all repeating the same mistakes and it takes the same insane amount of time for each one to program a small engine...with all the "I spent a day figuring out why my uniform value is -1"-mistakes and so on.
Offline princec

« JGO Spiffy Duke »


Medals: 1128
Projects: 3
Exp: 20 years


Eh? Who? What? ... Me?


« Reply #7 - Posted 2016-08-02 08:30:07 »

delt0r is much more cleverer than wot I am. I find it to be extraordinarily difficult and it gives me major headaches. Admittedly a lot of the headaches are just caused by the fact that Java makes it rather difficult to do 3D graphics thanks to missing language features and so you spend half your time just scratching your head over pointless coding bugs which are incredibly difficult to track down (because usually the result is "black screen").

Cas Smiley

Offline ShadedVertex
« Reply #8 - Posted 2016-08-02 10:41:29 »

If you want to make 3D games, use an engine. If you want to learn how engines are made, learn OpenGL/DirectX/Vulkan/any low-level graphics API.

If you want to make amazing 3D games with realistic graphics and physics, but you want to use OpenGL...just don't. It's not worth the time and effort.
Offline Kailoss
« Reply #9 - Posted 2016-08-02 18:06:45 »

And since the thread author mentioned that he's a self-learner - I already saw a dozen of OpenGL self-learners personally....without exception they are all repeating the same mistakes and it takes the same insane amount of time for each one to program a small engine...with all the "I spent a day figuring out why my uniform value is -1"-mistakes and so on.

I fit into this category, except for me it's more like "I spent a day trying to figure out what a uniform value is, and still don't know", but if time isn't an issue there's nothing you can't work through eventually. I can't say how long it would take, with just high-school math, but just getting to the point where you can draw a cube and have user-input rotate the camera might take a couple weeks if you don't use an engine.

I know enough to know that I don't know enough, but I'm learning.
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline delt0r

JGO Wizard


Medals: 145
Exp: 18 years


Computers can do that?


« Reply #10 - Posted 2016-08-02 22:22:47 »

I said it's one of the most diffucult fields in CS, thats a difference.
And it really isn't. Not even close. And not by any CS i know and I know a lot since it is my day job. In fact my friend on the other side of the room laughed when i told him your quote, with a plain "what? seriously?" follow up.

Fine 3d may be harder than 2d, and bugs are difficult because as cas says you get just black. But come on. It is 3d euclidean geometry in a well established field and industry with a massive set of tools available in just about any licence you want. Most senior high school students should be fine. As long as they are not majoring in something stupid like rock climbing.

I have no special talents. I am only passionately curious.--Albert Einstein
Offline Archive
« Reply #11 - Posted 2016-08-02 22:57:44 »

Most senior high school students should be fine.

I really agree with this, however I think most of the difficulty comes from the desire (or lack thereof) to learn and improve.

Offline princec

« JGO Spiffy Duke »


Medals: 1128
Projects: 3
Exp: 20 years


Eh? Who? What? ... Me?


« Reply #12 - Posted 2016-08-03 08:29:20 »

And it really isn't. Not even close. And not by any CS i know and I know a lot since it is my day job.
It's the second most complex* and difficult field I've encountered in my 37 years of programming. I think you may be being dismissive of the effort and knowledge and belittling the sheer brainpower that has gone into it... it ain't remotely easy. Not by even the most fanciful imagination.

Cas Smiley

* The most complex field I've been involved in is marine seismic exploration, where I am now

Offline philfrei
« Reply #13 - Posted 2016-08-03 08:40:05 »

And it really isn't. Not even close. And not by any CS i know and I know a lot since it is my day job.
It's the second most complex* and difficult field I've encountered in my 37 years of programming. I think you may be being dismissive of the effort and knowledge and belittling the sheer brainpower that has gone into it... it ain't remotely easy. Not by even the most fanciful imagination.

Cas Smiley

* The most complex field I've been involved in is marine seismic exploration, where I am now

Please tell me the job doesn't involve blowing cetacean's ears out with loud sonic blasts.

music and music apps: http://adonax.com
Offline princec

« JGO Spiffy Duke »


Medals: 1128
Projects: 3
Exp: 20 years


Eh? Who? What? ... Me?


« Reply #14 - Posted 2016-08-03 08:50:06 »

Actually that's exactly what it involves. And in a funny coincidence, why I was hired, which was to help design a system that doesn't kill every whale within 5 miles.

Cas Smiley

Offline delt0r

JGO Wizard


Medals: 145
Exp: 18 years


Computers can do that?


« Reply #15 - Posted 2016-08-03 23:30:40 »

Wait what? I worked on some oceanography stuff in the Physics department in NZ we were sending sonar signals from the US right across the pacific to NZ and Antarctica! It sounds "loud" in dB but that is because the scale is different for underwater sound. So we were not having any problems as in Whale song is louder.

Small world.

I have no special talents. I am only passionately curious.--Albert Einstein
Offline philfrei
« Reply #16 - Posted 2016-08-03 23:44:37 »

Actually that's exactly what it involves. And in a funny coincidence, why I was hired, which was to help design a system that doesn't kill every whale within 5 miles.

Cas Smiley

I wish you every success!

music and music apps: http://adonax.com
Pages: [1]
  ignore  |  Print  
 
 

 
Riven (207 views)
2019-09-04 15:33:17

hadezbladez (4947 views)
2018-11-16 13:46:03

hadezbladez (1824 views)
2018-11-16 13:41:33

hadezbladez (5223 views)
2018-11-16 13:35:35

hadezbladez (1029 views)
2018-11-16 13:32:03

EgonOlsen (4407 views)
2018-06-10 19:43:48

EgonOlsen (5248 views)
2018-06-10 19:43:44

EgonOlsen (2986 views)
2018-06-10 19:43:20

DesertCoockie (3880 views)
2018-05-13 18:23:11

nelsongames (4313 views)
2018-04-24 18:15:36
Java Gaming Resources
by philfrei
2019-05-14 16:15:13

Deployment and Packaging
by philfrei
2019-05-08 15:15:36

Deployment and Packaging
by philfrei
2019-05-08 15:13:34

Deployment and Packaging
by philfrei
2019-02-17 20:25:53

Deployment and Packaging
by mudlee
2018-08-22 18:09:50

Java Gaming Resources
by gouessej
2018-08-22 08:19:41

Deployment and Packaging
by gouessej
2018-08-22 08:04:08

Deployment and Packaging
by gouessej
2018-08-22 08:03:45
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!