Java-Gaming.org Hi !
Featured games (91)
games approved by the League of Dukes
Games in Showcase (804)
Games in Android Showcase (239)
games submitted by our members
Games in WIP (868)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1] 2
  ignore  |  Print  
  Realistic graphics -- how can it be achieved?  (Read 38227 times)
0 Members and 1 Guest are viewing this topic.
Offline ShadedVertex
« Posted 2015-12-18 13:26:45 »

Let me start off by saying that I respect AAA game titles for how they push computer graphics further and further. GTA 5 bears an uncanny resemblance to real life -- uncanny, because it's a computer game. A game with that kind of graphics...wow. I want to do that!

But these games are normally made using modern game engines, of which the three most popular are Unreal Engine, Unity3D and CryEngine. All three of these games are insanely powerful tools -- but I don't want to use these engines. Firstly, somehow a large part of the credit ends up going to them. Secondly, I feel like they're not for me, because I just don't like doing things without understanding how the rendering is done behind the scenes. Which is why I learnt OpenGL.

But from what I understand, these engines were made using OpenGL, because of its availability on most platforms, unlike Direct3D. That's what I got off of the Internet. So how do I go about achieving those really breathtaking graphics in LWJGL (I'm referring to the realistic lighting, the soft shadows and basically the realistic physics)? Most importantly, is it possible for one person to do it within one year?

EDIT: my focus is on the lighting and shadows.
Offline KaiHH

JGO Kernel


Medals: 796



« Reply #1 - Posted 2015-12-18 13:44:04 »

It is not possible for one person with OpenGL-only to do that even in twenty years.
That's not at last because the realism in such games comes to a very big extent from the use of extremely well done artwork. 3D models, textures and of course pleasing level design.
(which is why I want to learn how to do that instead of delving ever deeper into OpenGL)
Also add to that non-visual qualities like music and sound effects.
You can implement the most fancy realistic shading and camera effects in your game/engine. But if you shoot for real-life realism, you need real-life looking artwork. Look at games such as Ubisoft's "Grow Home" with its low-poly/flat-shaded style, which uses a good engine, I'm sure, but its artstyle is simply not realistic. So they did not need any textures or high-fidelity 3D models. It was surely easier for them, because they did not want to invest in a squadron of graphics designers. (the game only costs 8 bucks) Smiley
I am also pretty sure that those realism-style AAA games employ by a very large number more graphics and level designers than programmers. And most programmers probably write tools to cater to those designers to do their jobs more efficiently by streamlining the workflow processes and integrating better with existing tools/engines.
Offline ags1

JGO Kernel


Medals: 367
Projects: 7


Make code not war!


« Reply #2 - Posted 2015-12-18 14:42:35 »

The graphics in those games were not done by using any specific game engine... They were achieved by employing large teams of talented artists. The game engines are built to support the workflow of the artists and other content makers.

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Oskuro

JGO Ninja


Medals: 77
Exp: 10 years


Coding in Style


« Reply #3 - Posted 2015-12-21 09:12:51 »

Case in point, you can see lots of games pop up in steam, developed by small teams, using engines with all the bells and whistles graphics-wise.... And they still feel unrealistic.

Thing is, our mind is pretty good at spotting fakery (uncanny valley effect and such),  so anything that is out of place will bring the feeling of realism crashing down.

I'd say, though, that if your game achieves a good degree of immersion, the players will have an easier time suspending disbelief and feeling it as "realistic", despite the graphics not being that "photorealistic". But I don't think that's what you're asking about.

Offline pitbuller
« Reply #4 - Posted 2015-12-22 17:28:29 »

If you just want to understand and learn then start with unreal engine. There are lot's of documentation, presentations, videos and all code is available at github. You don't need to start from scratch and build AAA engine to know how it's done. You just need basic knowledge to learn from various sources. Roquen posted nice link collection. Just read everything from there.(I already have) https://gist.github.com/AbstractAlgorithm/d0194f477adf829822ff
Offline ShadedVertex
« Reply #5 - Posted 2015-12-30 11:41:54 »

That's a really sweet link, pitbuller. Thanks for sharing Cheesy And kudos to Riven for digging that up  Tongue
Offline Riven
Administrator

« JGO Overlord »


Medals: 1371
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #6 - Posted 2015-12-30 14:17:23 »

That's a really sweet link, pitbuller. Thanks for sharing Cheesy And kudos to Riven for digging that up  Tongue
Had nuthin' to do with that one persecutioncomplex

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings!
Offline ShadedVertex
« Reply #7 - Posted 2016-01-02 13:47:21 »

@Riven

Well, thanks for sharing it then  Cheesy
Offline Riven
Administrator

« JGO Overlord »


Medals: 1371
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #8 - Posted 2016-01-02 17:47:50 »

Roquen != Riven persecutioncomplex

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings!
Offline Ecumene

JGO Kernel


Medals: 200
Projects: 4
Exp: 8 years


I did not hit her! I did not!


« Reply #9 - Posted 2016-01-02 18:13:14 »

Case in point, you can see lots of games pop up in steam, developed by small teams, using engines with all the bells and whistles graphics-wise.... And they still feel unrealistic.

Just a tangent on photorealism, have any of you guys seen the ToddyHancer mods?


More here http://martinbergman.imgur.com/

He did the same thing to GTA, and it looks like all he's doing is post-processing effects. I just wanted to make a point, sometimes that's all you need to make it photo-realistic.
But on the topic of "Realistic" in itself... Immersion comes from detail... Remember that!

Also, OP. If you want to make a AAA looking game and not have the inevitable heat-death of the universe get in your way you should probably get into unity/unreal. Unity lets you see sort-of behind the scenes in terms of graphics and game engine. Nobody's going to discredit you if you have a fun game that's made in unity. Also, unity is in C#... So you won't be posting many topics around here I hope Wink

If you want to stick with Java, LibGDX has a lot of articles on how to do stuff in it, and there is plenty of example resources out there to play around with. All while you don't have to give any credit! (While they'd like it if you did). You might not get AAA graphics unless you're really good at it. It's in java too! So you can bug the forum if you need help.

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline KaiHH

JGO Kernel


Medals: 796



« Reply #10 - Posted 2016-01-02 19:19:14 »

Yes, I remember @basil_ experimenting with some cool "lens dirt?" post effects.
Those also make things look more cinematic.
But like you said, one needs to have detail and also realistic artwork to start with.
On top of that, adding post-processing effects can make those scenes look more like being captured by a film camera as opposed to be seen by human eye, and I'd say they help in hiding/concealing mistakes/unrealism in the original render, because we know "yeah, a camera with film grain and everything cannot capture reality as realistic" and we tend to forgive a camera shot more because of this.
Offline basil_

« JGO Bitwise Duke »


Medals: 418
Exp: 13 years



« Reply #11 - Posted 2016-01-02 20:17:08 »

just picked up my nick ..

screen-pixel += blur(bright-pixel) * 
dirt-texture
;


o/

Offline Coldstream24

JGO Ninja


Medals: 82
Projects: 1
Exp: 4 years


You can fill that void inside with programming, but you'll never return a value.


« Reply #12 - Posted 2016-01-06 20:28:00 »

I think that the means by which we're going to be able to see 'photo-realism' come to game graphics is still a long way off in terms of processing power:
https://en.wikipedia.org/wiki/Ray_tracing_%28graphics%29
It's incredibly intensive but the examples in that article have some fantastic results - still, these renders still take incredibly large amounts of time, and that's far more than can be pushed out at sixty or 144 frames per second by even the most powerful hardware available.

I think that what we perceive is largely dictated by the light we see and don't see - it's what helps us distinguish between objects, establish depth and distance through shadow, and reflect and refract through different materials. Because of this I see the means by which we simulate light in a graphics context as the way forward in terms of increasing photo-realism. Once we can achieve suitable performance I think that techniques like ray tracing will be able to replace most shaders.

My website: http://www.onedropgames.com/
My soundcloud: http://www.soundcloud.com/coldstream24
Creator of the Morningside Engine, co-founder of Onedrop Games.
Offline Archive
« Reply #13 - Posted 2016-01-07 00:52:50 »

...
I've always wondered how ray-traced objects are stored in a file. Are they just very high polygon models or is there a special format that allows the curves, lines and edges to be defined as functions. I know that spheres, ellipsoids and other primitive objects can be defined mathematically for ray-tracers but more intricate things like a teapot cannot as far as I know.

Offline Roquen

JGO Kernel


Medals: 518



« Reply #14 - Posted 2016-01-07 09:19:20 »

Raytracing is a red-herring for realtime for the foreseeable future.  In fact raytracing alone doesn't produce very good results.  WRT to complex objects..you can define arbitrarily complex object implicitly in the same way you can simple objects.
Offline Roquen

JGO Kernel


Medals: 518



« Reply #15 - Posted 2016-01-07 09:32:28 »

I should have said this in the previous.  Go to shadertoy.  All things rendered are implicitly defined and many are way more complex than a teapot.  As a single example: https://www.shadertoy.com/view/ld3Gz2
Offline ShadedVertex
« Reply #16 - Posted 2016-01-07 13:18:33 »

Thanks for all the interesting answers Cheesy

I feel like this is a great thread for posts about advancements towards truly realistic graphics.
Offline ABOODYFJ
« Reply #17 - Posted 2016-02-17 22:02:35 »

Depending on how much effort you put in you can do it within two months. I built my whole engine from scratch within two months. It has all the features listed above and many more. Some of the people saying it would take 20 years or more for one person are just undedicated. Of course you still need good graphics designers and animators/riggers to bring your games to life. But it's not far from the scope of reality to do such games in a one man studio. Sure it might take longer eventually but it's very possible.
Offline EgonOlsen
« Reply #18 - Posted 2016-02-18 09:30:04 »

Depending on how much effort you put in you can do it within two months. I built my whole engine from scratch within two months. It has all the features listed above and many more. Some of the people saying it would take 20 years or more for one person are just undedicated. Of course you still need good graphics designers and animators/riggers to bring your games to life. But it's not far from the scope of reality to do such games in a one man studio. Sure it might take longer eventually but it's very possible.
This is wrong on so many levels, that I don't even know where to start...let's try with what you said about your own work. Even if we assume that the statement "it has all the features listed above" is true (albeit I can't find such a feature list anywhere above...), you haven't build it in two month. A quote from yourself from your own thread about your engine (which is great work, don't get me wrong...I really appreciate it): "The base engine took me 2 months to build, But with time I started adding more features, So the total time now is a full year."...not two months, but a full year to add the features that you've listed in that thread. And those features, while it is impressive to see what you achieved in just one year, are nowhere near the feature set of AAA engines...the Unreal engine hasn't been done by a dedicated guy in his basement over the period of 2 months.

But let's move on: "You can do "such games" (which ones exactly, btw...?) in a one man studio. But you still need good artists and animators to do it"...which somehow doesn't fit my idea of a one man studio, but anyway. If that's true, why don't we see dozens of "such games" from indie development studios (which usually consist of more than one guy anyway...)? I guess it's all lack of dedication...or maybe not?

Let's see some numbers: GTA V had a development team of 1000 people and costed 137 million dollars to make (just the game, marketing and such excluded). The Witcher 3 had a team of 200 people and costed approx. 30-40 million dollar (again, excluding marketing). 10 different game studios were involved in the making of Assassins Creed Unity, approx. 400-500 people (budget unknown). Good old Morrowind (http://www.elderscrolls.com/morrowind/) from 2002 took 100 man years to build.

Good luck on trying to build even 10% of the Witcher 3 on your own. It will take you years, even decades, no matter how dedicated you are. There a physical limits on what one guy can do...time passes regardless of dedication and tasks take their time, even if (which is highly unlikely) you are able to do eveything on your own (and can live for 20 years without additional income...).

Also interesting in this context: https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect


Offline KaiHH

JGO Kernel


Medals: 796



« Reply #19 - Posted 2016-02-18 10:04:32 »

@ABOODYFJ, also add to those two months the likely many many years it took you to build up the knowledge to implement said features in your engine and coming up with an architecture/design of the system that supports this.
You cannot simply come here and say "people, it is possible to develop a game engine like this in two months." This is just eyewash, and will end up in people less experienced than you to be frustrated about why their development usually took years and not two months.
Doing something like this always involves building countless demo programs, reading countless tutorials/articles/specifications, writing countless little games and "engines" and throwing them away afterwards and learning from that experience. And you likely built up on existing work/code/frameworks which you or others have built in the past. So when reading posts like this, people really should not take that "from scratch" literally. And I think most developers here are jaded enough to know that.

I am also just thinking about that it took two dedicated people one full year to even develop a linear algebra library that has now become a little bit above "barely useful" for game development and finally found its way into different game projects.
Adding on what @EgonOlsen said, I'd like to see how much time and effort you are going to invest in the future into your game engine so that it becomes usable and used by game projects.

You just cannot imagine with how many use cases and requirements you are going to be bombarded with, once someone decides to actually use your engine/framework. Smiley
THAT is when you should start measuring time and effort.
Offline ags1

JGO Kernel


Medals: 367
Projects: 7


Make code not war!


« Reply #20 - Posted 2016-02-18 11:30:03 »

This is also the 80-20 rule in effect. The first 80% of a task takes only 20% of the effort, leading to an positive misperception of progress. However an 80% done program is useless (for other people, it may however fit a specific use case,  which is most definitely not the purpose of a "game engine"). The remaining 20% of functionality takes 80% of the effort. This last 20% leads to a negative misperception of hitting a wall and being "stuck".

Offline ShadedVertex
« Reply #21 - Posted 2016-02-18 12:54:43 »

Roquen != Riven persecutioncomplex

Darn it I keep getting it all mixed up Tongue
Offline gouessej
« Reply #22 - Posted 2016-02-18 13:03:17 »

Most importantly, is it possible for one person to do it within one year?
No. I advise you to stick to something viable to avoid a lot of frustration. Some people here told you that it isn't doable for a single person and I totally agree with them.

Julien Gouesse | Personal blog | Website | Jogamp
Offline Oskuro

JGO Ninja


Medals: 77
Exp: 10 years


Coding in Style


« Reply #23 - Posted 2016-02-19 10:41:52 »

I'd also advise, when looking at indie devs that have managed impressive projects, to take note of where they come from.

Some of the best indie games out there have been built by people with years of experience in the gaming industry, and in many cases, even one-man projects end up requiring a team.

Offline Coldstream24

JGO Ninja


Medals: 82
Projects: 1
Exp: 4 years


You can fill that void inside with programming, but you'll never return a value.


« Reply #24 - Posted 2016-02-19 23:23:41 »

Since we're on the subject:
The number one rule is to NOT get ahead of yourself, under any circumstances. Don't get cocky after you make a bit of progress, think about what you've learned and how it can be applied. So don't go looking at projects made by tens to hundreds of people and think "oh, that's easy".
Indie game development is not a race, and the amount of time you take to develop a game is not necessarily related to the amount of dedication you have for the project. I could say I'm "dedicated" to building my engine, but I have other commitments that take priority, such as my last year of high school, and my job. It's possible for me to plug every waking hour into my project, and while that may satisfy your criteria for dedication it's also borderline stupid. It seems too easy to forget that games should be a result of passion, or enjoyment in what you do as a programmer, works of self-expression, and art. We all get to where we are because we learn from our progress, and from our mistakes, and whether the end-goal is money or just a game that you'd want to play, game development should be a satisfying, fun and enriching experience, not one where you sit at a desk and churn out code as fast as possible.

My website: http://www.onedropgames.com/
My soundcloud: http://www.soundcloud.com/coldstream24
Creator of the Morningside Engine, co-founder of Onedrop Games.
Offline Grunnt

JGO Kernel


Medals: 143
Projects: 8
Exp: 5 years


Complex != complicated


« Reply #25 - Posted 2016-02-21 09:47:43 »

You may also want to consider how valuable "realism" is in games. Realism is a strange thing: the more realistic a game (or computer generated movie for that matter) becomes, the harder it gets to really immerse players / viewers. No doubt, GTA V is awesome, but as others said, that's really mostly the work of awesome artists (and a huge budget). When you get down to it, the game mechanics are a whole different story. These are really great, but much closer to what one or a couple of smart dudes in a basement can achieve.

Offline ABOODYFJ
« Reply #26 - Posted 2016-02-21 20:15:38 »

@ABOODYFJ, also add to those two months the likely many many years it took you to build up the knowledge to implement said features in your engine and coming up with an architecture/design of the system that supports this.
You cannot simply come here and say "people, it is possible to develop a game engine like this in two months." This is just eyewash, and will end up in people less experienced than you to be frustrated about why their development usually took years and not two months.
Doing something like this always involves building countless demo programs, reading countless tutorials/articles/specifications, writing countless little games and "engines" and throwing them away afterwards and learning from that experience. And you likely built up on existing work/code/frameworks which you or others have built in the past. So when reading posts like this, people really should not take that "from scratch" literally. And I think most developers here are jaded enough to know that.

I am also just thinking about that it took two dedicated people one full year to even develop a linear algebra library that has now become a little bit above "barely useful" for game development and finally found its way into different game projects.
Adding on what @EgonOlsen said, I'd like to see how much time and effort you are going to invest in the future into your game engine so that it becomes usable and used by game projects.

You just cannot imagine with how many use cases and requirements you are going to be bombarded with, once someone decides to actually use your engine/framework. Smiley
THAT is when you should start measuring time and effort.

Well I really don't have years of experience. I wanted to build something, So I read about the subject, Whenever I couldn't figure something out I'd try to find a solution for it and I did. And I'm already using my engine for a game demo that I'm making, The only hurdles are things that I haven't implemented and I'm not really interested in implementing them anyway because they can easily be added via script, The less pre-built features, The more dynamic an engine is because then it is not designed for a specific type of game.
Overall my answer was from my experience, What OP was asking is if it's possible. And it most definitely is. You don't need to have years of experience if you can learn fast.
Offline Coldstream24

JGO Ninja


Medals: 82
Projects: 1
Exp: 4 years


You can fill that void inside with programming, but you'll never return a value.


« Reply #27 - Posted 2016-02-21 20:32:28 »

Fast learning != effective learning != dedication

My website: http://www.onedropgames.com/
My soundcloud: http://www.soundcloud.com/coldstream24
Creator of the Morningside Engine, co-founder of Onedrop Games.
Offline ShadedVertex
« Reply #28 - Posted 2016-02-23 10:21:09 »

Dedication allows you to learn effectively. But it generally slows down the rate at which you learn.
Offline BluWingedOlive

Senior Newbie


Medals: 1



« Reply #29 - Posted 2016-02-24 13:36:47 »

Add that , imho , a perfect 3d Eva Green clone with enanced boobs riding nude a dragon
 that doesn't  know where to go is worst than a decent  "snake" clone  Smiley
Pages: [1] 2
  ignore  |  Print  
 
 

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

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

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

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

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

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

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

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

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

nelsongames (5115 views)
2018-04-24 18:15:36
A NON-ideal modular configuration for Eclipse with JavaFX
by philfrei
2019-12-19 19:35:12

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
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!