6 ms·
Gorgeous Unreal Engine 4 brings direct programming, indirect lighting
- kristofferR 14y agoHere's the video of the developer walktrough: http://www.gametrailers.com/video/exclusive-development-unreal-engine/731871 http://www.gametrailers.com/video/exclusive-development-unre... It's stunning that this runs on a single Nvidia GeForce 680GTX in an editor without any visible lag at all. I wonder why tesselation wasn't enabled though, it may have been because of performance issues.
- augustl 14y agoI've been looking for a source on what hardware this demo ran on, where did you figure that out?
- alainbryden 14y agoIt's mentioned in the parent article: > You're going to need the latest hardware to get access to all that graphical power, though. The demo we saw was running on a top-of-the-line NVIDIA GeForce GTX 680 graphics card, and we were told explicitly that the engine was currently being targeted for the next generation of console hardware rather than the Xbox 360 and PS3
- luiperd 14y agoI wonder how well this'll run on the GTX 570 (or two of 'em). Wish they'd release a demo for people to play with.
- alainbryden 14y agoWow. When he popped out of full screen and revealed that he was in his editor - mind blown.
- rorrr 14y agoI was more impressed by the live recompilation. It didn't interrupt his gameplay at all.
- photon137 14y agoVery Beautiful! The demo has a nice Skyrim/LOTR feel to it and the lava flows were just gorgeous! If that lava flow generation is completely procedural then I'm extremely impressed. Writing a highly parametrized engine like that with JIT script compilation is plain awesome!
- forrestthewoods 14y agoThere is no script. It's all done in C++ with the project broken up cleverly into DLLs which can be reloaded at run-time without interruption. And I believe the lava flow is done with animated meshes.
- photon137 14y agoI thought Kismet was pseudo-script (albeit with a GUI). Edit: http://www.unrealengine.com/features/kismet/ http://www.unrealengine.com/features/kismet/
- forrestthewoods 14y agoUE3 had Unreal Script which was a custom scripting language and that has been removed from UE4. Kismet is more data than script. There's no JIT-compilation.
- teamonkey 14y agoTo be clear, Kismet is a flow-based visual scripting language where you connect boxes together. In UE3 Kismet boxes are scripted in UnrealScript. In UE4 they are written in C++ and automatically reloaded when the code is re-compiled.
- barrkel 14y agoI have mixed feelings about this. UnrealScript had a lot of interesting ideas; particularly its module system (a kind of sideways inheritance where you could override an ancestor in a package, but not have to override all the descendants to have them inherit the behaviour - really handy for third-party plugins); the synchronous animation playback, effectively using continuations behind the scenes; how it handled synchronization of variables for client/server; and to a certain degree the "modes" that objects could be in, a way of switching behaviour of a whole slew of methods en masse. On the other hand, object-oriented approaches are not great for simulating huge numbers of entities, where column-major array-based layouts are a lot more efficient. I wonder if Kismet data-flow graphs may end up getting too complicated for their own good. They look like they could do with a textual representation. The obvious manual iteration involved in the creation of the orrery in the gametrailers demo video posted in the comments elsewhere here shows how painful this approach can be.
- adrianm 14y agoThis stuff is really fascinating. Does anyone have any recommended reading or general advice as to how to learn more about game/graphical engine implementation? I mean, from the ground up. (I'm a CS undergrad and the closest we've gotten to learning about this has been the computational geometry chapter in CLRS, but that was a mildly esoteric introduction to everything that is possible in this field.)
- photon137 14y agoNeHe's OpenGL tutorials used to be a good (although now kind of outdated) starting point. Shaders didn't use to exist back then. But still a good start: http://nehe.gamedev.net/ http://nehe.gamedev.net/ A game engine is much more complex than a graphics engine. Maybe somebody can point to guides for creating physics/sound engines and AI/gameplay stuff as well?
- malexw 14y agoWhen I started learning I spent a lot of time reading NeHe tutorials. But modern OpenGL feels so far removed from those tutorials that it feels like learning a completely different API. The best tutorials I've found for modern OpenGL is "Learning Modern 3D Graphics Programming" by Jason McKesson. The only problem I have with these tutorials is that there aren't enough! http://www.arcsynthesis.org/gltut/ http://www.arcsynthesis.org/gltut/
- photon137 14y agolovely, thanks!
- photon137 14y agoAlthough, when I go through the code, it feels more like a copy of the (legendary) Red Book. Missing vector/pixel (or fragment in GL-speak) shaders as well.
- adrianm 14y agoI really appreciate all of the responses and have already put many of the recommended texts on my wishlist. (And I just bought Game Engine Architecture as well, too bad you didn't post an Amazon affiliate link for yourself!) But I just wanted to point out that since this tutorial is free, I immediately checked it out, and I am absolutely blown away. This will certainly keep me busy until GEA arrives! Thanks so much, it looks to be a great starting point for learning more. Edit: I also wanted to point out that in the author's preface, he discusses what he considers the downside to most introductory texts and tutorials in 3D graphics programming - presenting "fixed functionality" that allows newcomers to more quickly use the tools at hand by abstracting much of the foundational information away. While this is certainly useful for experienced developers learning a new derivative technology on top of what they already know, I have always found this approach for introductory stuff frustrating. At the end of the day I may come away pseudo-understanding a "higher level" concept, but ultimately much has been abstracted away and I am left ignorant and, as the author says, "Programming thus becomes akin to magical rituals: you put certain bits of code before other bits, and everything seems to work." I wish I knew of more texts like this for other fields where over or premature abstraction could endanger comprehension. (For example, I know I would like to see a similar approach taken to other complex topics, like networking.)
- TrevorJ 14y agoComing from a film background, it is clear there is a lot of conflation happening in these articles between light that 'behaves' like it would in the real world, and 'good' lighting. That is why you get quotes like in this article 'I light my scene by dropping a sun in'. In reality, there is a whole lot more to lighting then simply having lights and materials that behave naturally. Sure, this gives you more realistic looking results out of the box, but it doesn't mean you don't have to sculpt and massage and tune your lighting to achieve the artistic result you want, especially for interiors, or scenes with characters in the foreground.
- gbrindisi 14y ago> In reality, there is a whole lot more to lighting then simply having lights and materials that behave naturally. For example? (genuinely curious)
- photon137 14y agoRaytracing for one. Also, none of the graphics engines really capture the wave-nature of light - intereference/diffraction etc. Radiosity captures a bit of this but from an intensity/energy point of view.
- photon137 14y agoOh sorry, I missed the point :) Artistic lighting - now that's a different thing!
- daenz 14y agoAchieving a specific mood or "feel" for an environment requires someone who is very sensitive to lighting, color, and architecture, and who has knowledge of techniques to achieve certain looks. For example, if you want an ominous feel to a cathedral, you need to know what light colors are more ominous than others, what direction of lighting (maybe bottom up, rather than from the top), what types of lights...many dim point lights? or single directional lights?, if light scattering through a medium like fog would look good, etc etc. And also keeping in mind functional aspects like, can the player still see items or things he needs to do, even with all of this specific lighting. Another example might be that while lighting and materials might behave naturally, sometimes they still behave in undesireable ways. Suppose the angle of the sun reflected off of a reflective surface right into the player's face right while he was at a specific location where he needed to do something. If you can't move the surface, can you shift the light? Will that effect the scene much? Maybe now that you shifted the light, the rays of light that were going through a tree branch beautifully are not there any more.
- laserDinosaur 14y agoThe bit where he made a change to the source code, let it recompile on it's own, got a little alert in the editor when it finished and then had the change apply all without restarting the engine...WOW!
- TwoBit 14y agoFYI The Sims did that 10 years ago.
- aw3c2 14y agosource, link, reference, anything?
- bvdbijl 14y agoJust FYI, Eclipse for Java has the same feature http://wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F http://wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F
- robterrell 14y agoUnity does this now. You can recompile a file while your game is playing in the editor, and the running code is replaced. And I almost never use it -- I should figure out why that is.
- zerd 14y agoFor C++? That's the impressive part.
- jlongster 14y agoI find it hilarious that (presumably) my computer could render that smoothly but the video itself stutters.
- corysama 14y ago"The UE4 demo is running on PC, specifically an Intel Core i7 processor with an NVIDIA GTX680 and 16GB of RAM" http://www.eurogamer.net/articles/digitalfoundry-vs-unreal-engine-4 http://www.eurogamer.net/articles/digitalfoundry-vs-unreal-e...
- nacs 14y agoThat's because UE4 probably contains a lot better quality of code (and better GPU acceleration) than the horribly slow and buggy Flash plugin that powers that video.
- wtracy 14y agoI just have to say: Realtime rendering has finally become interesting to me. o_O
- dualogy 14y agoIncredibly stunning tech. Now, I'm gonna go fantasize about an open-source version of this with updates every month (instead of every 3 years) -- as a compromise, I could do without the whole hot-reloading IntelliEditor shebang and consoles support -- a concentration on PC hardware that "will be commodity in 2 years, on mobile in 4 years, but can already be bought as state of the art now" (aka Kepler GPUs) would be enough. To the pros: in your opinion, which of the many FOSS engines out there (many of which carrying a large legacy code-base of supporting soon-outdated modes of operation such as DX9 or lower or GL < 4.0) is the most likely candidate to offer a deferred pipeline incorporating lighting / particles such as we see here in this UE4 demo, at that level of performance and (expected but also demoed) robustness? Again, their "industry" tack (smart editor / console support, "we license only to pro developers" stance etc) would not be required ... only the "metal".
- dkersten 14y agothe whole hot-reloading IntelliEditor shebang As a programmer, I find this much more compelling than the graphical improvements.
- dualogy 14y agoI agree it's incredibly neat -- but let's say I'm just personally most interested in the core engine side of things -- much less a however-advanced "Game Studio" of sorts. Is it compelling -- you bet.
- photon137 14y agoSome branch of the GPL'ed idTech 4, I suppose? Back in the day, OGRE, Crystal Space and Irrlicht used to be the dominant FOSS ones. Crystal Space is a bit outdated now. Irrlicht is stuck at DX 9.0 and OpenGL 3.x OGRE seems the most likely candidate (ie the project is the most active and has been for years). Although it is also stuck at SM 3.0 - so no geometry shaders or access to the compute pipeline. I am likely to be missing out on some other engines here.
- azakai 14y ago
- asianexpress 14y agoIn a way, this system reminds me of Light Table[1] in its ability to change some code/settings and get instant feedback. It totally changes the way people create content because it becomes so much more accessible and so much faster to see changes -- you can play around with a lot of different approaches more quickly, resulting in more room for experimentation. Pretty amazing stuff! Really curious to see the tools that power all of this, as well as hear the architect's (or architects') vision for all of this [1] http://www.kickstarter.com/projects/ibdknox/light-table http://www.kickstarter.com/projects/ibdknox/light-table
- teamonkey 14y agoBeing able to compile code and reload it while the engine is running is something that has existed in many engines for several years. What's cool here is that the engine keeps running while editing and compiling, then it auto-reloads and pushes the changes when compiled.
- asianexpress 14y agoYeah definitely -- I guess what I meant was that there's now an interface to manipulate code, without having to touch code, and then it automatically goes through the process you mentioned
- neuroelectronic 14y agowhat is direct programming?
- mochizuki 14y agoI read about this is the latest issue of Wired. This looks amazing.
- mck- 14y agoWhat a leap forward since Unreal/UT .. Hope the gameplay stays at least as good..
- f0untain 14y agoCan engine like this be used to create realistic UI for mobile apps ? without manually trying to create shadows etc for every button and sliders.
- pka 14y agoThe graphics stuff is amazing, but I'd be also interested to know how they achieve hot-loading with C++. It seems to me that Erlang's philosophy (or FP in general) would be of great advantage here - just have the engine handle entity state and make all of the game world manipulating functions referentially transparent. This way one can swap code between world "ticks" (or update cycles) without worrying about breaking something. I don't know how efficient something like that would be though; somebody mentioned cache issues with lumping heterogenous properties together, but maybe this could be optimized behind the scenes.
- rsaarelm 14y agoAt this point, seeing this kind of extremely high production value animation used to enact this kind of fantasy scene instantly makes me think of hackneyed backstory and plot focus-group optimized to death to appeal to slightly dull 14-year-olds. You don't throw out that sort of development budget to try out something with even a hint of narrative experimentalness, and you can always rely on there being kids with disposable income who haven't yet been saturated with cliches to the point of fatigue. "This looks very well done, it's probably bad" is a strange heuristic to have.
- pavlov 14y ago"This looks very well done, it's probably bad" is a strange heuristic to have. It's the same for Hollywood movies, isn't it? When the producers want to focus your attention on how expensive and uniquely complicated a game or movie production was, that's a sign that the actual content was a secondary concern.
- projectileboy 14y agoI see what you're saying, but the target audience here is the game development community. The animation was clearly designed to show various capabilities: indoor lighting, outdoor lighting, outdoor scenes, interiors with various materials, fluids, etc. etc. As with movies, it's still up to the team to use the tool to create a worthwhile experience.
- mgkimsal 14y agoWe've certainly come a long way since Demon Attack and Pitfall! :) I remember 23 years ago, trying to do 'ray tracing' on my Amiga would take... hours for one frame. It looked pretty good, but... wow. This is jaw-droppingly cool.
- jebblue 14y agoI still have Unreal III in a box new that I bought in 2007 because they said they would have a Linux Client for it.
- ameyp 14y agoWhy are people getting so excited about realtime global illumination and code hot-swap? CryEngine 3 already supports both, and has done so for the past year or so. Realtime global illumination has been possible for the past few years. I believe Crytek was the first studio to make a game engine with support for the same (www6.incrysis.com/Light_Propagation_Volumes.pdf) And the code hot-swap feature in the freely-available CryEngine 3 SDK isn't just for Lua, there's the CryMono project which adds support for hot-swapping C# scripts.