First Screenshots of Unreal Engine 4

  • Two Factor Authentication is now available on BeyondUnreal Forums. To configure it, visit your Profile and look for the "Two Step Verification" option on the left side. We can send codes via email (may be slower) or you can set up any TOTP Authenticator app on your phone (Authy, Google Authenticator, etc) to deliver codes. It is highly recommended that you configure this to keep your account safe.

elmuerte

Master of Science
Jan 25, 2000
1,936
0
36
42
the Netherlands
elmuerte.com
Depending on how the engine is built, compiling C++ is lightning fast.
C++ is seriously slow in compiling comparing to other languages. And the problem lies within its design. There's a reason why distributed compilers are so common for C++ (and C) but quite uncommon for other languages.

Unlike Java/UScript, you don't have to pass it to any kind of byte code translator at compile time, or run time.

First of all UnrealScript really had a barebones compiler that didn't even support incremental compiling. That made it slow. Java, most production level compilers are very fast.

As for bytecode to machine code translation. That's also done by C++ compilers (but only at compiletime). For Java is usually done at runtime (by a JIT), but it can also be done at compiletime, but of course makes your code less portable. Anyway, it's a non argument.

It can be natively compiled and loaded/run on the fly.

That's the most awesome part. Bytecode runtimes provide a VM that makes it easier to replace code. As long as the data structure hasn't changed it's dead simple to replace the code.
But with machine code, there usually is no clear separation of code and data in memory. To Epic managed to create a subsystem that makes this process possible for their engine. Although you probably have to conform completely to their framework for this functionality to work (using external code could probably break the hot replacing).
But you are probably only going to use that hot replacing feature for tweaking the code and not major changes.

I would love to see this on Linux for once :p

It's already available, for example: Ksplice
 

GreatEmerald

Khnumhotep
Jan 20, 2008
4,042
1
0
Lithuania
And C++ only is still a bad choice on itself imo.
It makes sense, as that's what the native code is written in. Though personally I'd rather see it use D, because D is as close to UnrealScript as it gets from the 'real' programming languages. Complete with garbage collection, dynamic arrays, but compiles natively, without a VM like Java. The syntax is also rather similar to UnrealScript (more C than Java, and no cryptic ">>" and "::" symbols). Plus it has support for templates and other high level tools.

I would love to see this on Linux for once :p
This.

UE3: excessive bloom
UE4: excessive particles and lens flares

Hey, I wouldn't mind excessive particles. True about lens flares, though, it's silly if viewed from a first person perspective.
 

Sir_Brizz

Administrator
Staff member
Feb 3, 2000
26,020
83
48
C++ is seriously slow in compiling comparing to other languages. And the problem lies within its design. There's a reason why distributed compilers are so common for C++ (and C) but quite uncommon for other languages.
Compared to what, Java? Most Java isn't compiled, but I suppose you could mean other JIT languages that operate faster than C/C++ compilers.
As for bytecode to machine code translation. That's also done by C++ compilers (but only at compiletime). For Java is usually done at runtime (by a JIT), but it can also be done at compiletime, but of course makes your code less portable. Anyway, it's a non argument.
I mostly just meant it was a compile time resolution. Java and UScript generally build into something that is later translated into something the computer can actually use.
But you are probably only going to use that hot replacing feature for tweaking the code and not major changes.
While the engine is running, I'm sure. It's probably not a lot more than interesting or cool, but I am happy with the move... for now.
It's already available, for example: Ksplice
Ewwwwww! Oracle...

Meanwhile, I was actually referencing UE4 :)
 

elmuerte

Master of Science
Jan 25, 2000
1,936
0
36
42
the Netherlands
elmuerte.com
Compared to what, Java? Most Java isn't compiled, but I suppose you could mean other JIT languages that operate faster than C/C++ compilers.

Given C++ language design it takes quite some effort just to be able to process the source code to the process the AST could be translated to machine code.
But you don't have to take my word on it: http://www.drdobbs.com/blogs/cpp/228701711

I mostly just meant it was a compile time resolution. Java and UScript generally build into something that is later translated into something the computer can actually use.

Usually yes. But, for example gcj compiles java to machine code. Still immature, but LLVM also has a frontend for Java/java bytecode, and thereby the ability to compile to machine code.

Anyway, my point being. A lot of compilers first compile the code to an intermediate byte code, from there on they could compile it to machine code or store to execute at runtime. LLVM is a nice example of this, it started out as a VM for it's bytecode. But eventually they continued on to compile the bytecode further to machine code.

ps, UnrealScript is never compiled to machine code, has always been interpreted.

Ewwwwww! Oracle...
Well.. oracle bought them. There are a few other smaller projects that aim to have similar functionality.
 

Leo(T.C.K.)

I did something m0tarded and now I have read only access! :(
May 14, 2006
4,794
36
48
Actually both videos were already posted in this thread.
 

ambershee

Nimbusfish Rawks
Apr 18, 2006
4,519
7
38
36
Nomad
sheelabs.gamemod.net
Epic managed to create a subsystem that makes this process possible for their engine.

I'm pretty sure this isn't what they've done, it's instead the same process as 'edit and continue' in Visual Studio. They still recompile the code (gameplay DLL), but it's not recompiled 'from scratch'. When the new DLL is recompiled, they switch the new one with the old one. This is why there is a delay between pressing the 'compile' button in the editor and seeing the changes, and why there is a brief flicker when the DLL does make the switch.