Differences in Quake and Unreal

Discuss programming topics for any language, any source base. If it is programming related but doesn't fit in one of the below categories, it goes here.
Post Reply
daemonicky
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Differences in Quake and Unreal

Post by daemonicky »

I dont have big understanding of Unreal Engines. I know the game script of Unreal is in some Cpp like language and I have heard they plan to move to Python. And they have few graphical tools, editors ...

I know that Quake logic is connected by few events to the engine (think, touch, prethink ...). How it is in Unreal?

I know that Quake physics is quite simplisitc, you just set movetype, solidtype attribues and touch, block event handlers. And if you want there is walk, setorigin, testpoint (??? testcontent ??? not sure about name) and traceline. How it is in Unreal?

How much is unreal sctipt just game logic like in quake?
In quake logic there are some broadcast/unicast messages, they most likely work even on net. Does Unreal have alternative?

One thing bothered me. How come there is more commercial games in Unreal than in Quake? Is it beceause of marketing, technology which fits that games better, ease of use, tools, available help (support), how graphics look like (first Unreal was looking MUCH better than other games in software) ...?
Spike
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK
Contact:

Post by Spike »

unreal typically uses subtractive geometry, while quake uses additive geometry. generally this difference just means unreal editors crash on you more often. grr.

uscript is fairly different from qc. its fully object oriented rather than the procedural aproach used in qc (more like java than c++).
uscript's modularity permits runtime inheritance, like java, which is what provides support for mutators. While I've added support for mutator-type mods in FTE in the past, they're a pain to properly integrate. qc's dependancy upon globals is a major flaw in that regard.
additional functionality in unreal is provided by new classes rather than just new builtins, which provides much more context, such classes can be written in c++ code to provide stuff like socket apis.

uscript contains replication information. you configure various fields and they get replicated to the client automagically.
unreal was built with gamecode running clientside from the start.
daemonicky
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Post by daemonicky »

Thank you very much for all the answers :) .
Spike wrote:unreal typically uses subtractive geometry ...
I also heard that it is easier to make levels in subtractive geometry. I use Qoole.

I read somewhere that to make one level for Doom it takes much less time than to make on for Quake. I am going to try to modify Qoole, so I can extrude faces (and post this modification, probably in form of patch or tutorial here) ... to make pillars and levels like in Doom Builder, level editor for Doom (not sure if other Doom editors do it similar way).
Spike wrote:runtime inheritance, like java ... additional functionality in unreal is provided by new classes ..
So new functionality is added by subclassing and not by delagation?
Spike wrote:...I've added support for mutator-type mods in FTE in the past ...
So it does not have delegation, does it?
On what principle these mutators worked?
Spike wrote:additional functionality in unreal ... classes can be written in c++ code to provide stuff like socket apis.
Does QuakeC allows it with some modification (i doubt it has this interface by default)? Id really love to use languages like sql or prolog here (I dont want to do resolution at hand) :) .
Spike wrote:uscript contains replication information. you configure various fields and they get replicated to the client automagically.


I dont know if I understand you correctly. Replication information is similar to those globals shared by clients and attribues shared by all entities?
Spike wrote:unreal was built with gamecode running clientside from the start.
I heard they will use python instead of uscript, not user if it is true.
daemonicky
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Post by daemonicky »

Are there event handlers in Unreal similar to Quake's (think, touch, block, "onClientConnect", prethink, posthink ...)?
Lardarse
Posts: 266
Joined: Sat Nov 05, 2005 1:58 pm
Location: Bristol, UK

Post by Lardarse »

From what I know, somewhat similar. UnrealScript has both touch and untouch, QuakeC lacks the latter. UnrealScript also has ways of allowing you to say "do foo for 2 seconds, then do bar" without having to have a seperate functions for foo and bar and using think/nextthink to change between them.

Googling "unrealscript reference" will fill in the gaps of my knowledge. Also, note that it uses actor to mean entity.

It also supports state-based programming (most AI systems in games, including Quake, use this) at the language level, but note the caveats of this in the documentation...
Roaming status: Testing and documentation
Baker
Posts: 3666
Joined: Tue Mar 14, 2006 5:15 am

Post by Baker »

daemonicky wrote:I am going to try to modify Qoole, so I can extrude faces (and post this modification, probably in form of patch or tutorial here) ... to make pillars and levels like in Doom Builder, level editor for Doom (not sure if other Doom editors do it similar way).
There are jokes at Func_Msgboard about "carving levels" in Quake (reference to the Worldcraft "carve" feature). It is a tool you must use very carefully as there are invalid shapes (concave ones, I believe) that will crash map compilers.

Generally the "carve" jokes at Func are about the completely wrong way to make a map for Quake (that lead to heartbreak and such that generally only someone inexperienced would attempt to do).

Just saying, although you can carve maps out of a huge block, the Quake engine and the tools aren't really designed for the chaos that when ensue.
The night is young. How else can I annoy the world before sunsrise? 8) Inquisitive minds want to know ! And if they don't -- well like that ever has stopped me before ..
daemonicky
Posts: 185
Joined: Wed Apr 13, 2011 1:34 pm

Post by daemonicky »

Lardarse wrote:Googling "unrealscript reference" will fill in the gaps of my knowledge.
I wish I did not. :-D This language is soo complex, like Cpp. Gee, it even has goto :shock: .

They can iterate trough all collisions so it is procedural (foreach TouchingActors). It might be useful ...

States http://udn.epicgames.com/Three/UnrealSc ... tml#States in it looks nice to me. Overriding each event handler (think, touch, block ...) for each state (state implies behaviour so you write for each state new think, touch ...). I think this can be done by some scripting too ... this looks like syntactic sugar ... I mean, they just hoisted what would you otherwise do as a

Code: Select all

touch_function = { if (self.state = 1) { } else if (self.state == 2) {} }
by doing

Code: Select all

self.state1 = { self.touch = touch_function1 } 
self.state2 = { self.touch = touch_function2 }
.
I do not know how State Stack works though ... :)
Lardarse wrote: "do foo for 2 seconds, then do bar" without having to have a seperate functions for foo and bar and using think/nextthink to change between them.
Cool. :) But it can be done by scripting language in Quake C. [/quote]

Baker wrote:There are jokes at Func_Msgboard about "carving levels" in Quake ...
:) Some CSG would be just fine in Quake editors. It would produce concave maps but concave maps can be converted into convex one. It is possible in general, but I do not know which editors or programs for Quake do that.
Baker wrote:(in other words) "... also concave invalid shapes crash map compilers... "
Yes. Quake supports only convex shapes see "Structure of Quake Levels" in http://www.bluesnews.com/abrash/chap64.shtml .
Lardarse
Posts: 266
Joined: Sat Nov 05, 2005 1:58 pm
Location: Bristol, UK

Post by Lardarse »

daemonicky wrote:Gee, it even has goto :shock: .
There's nothing wrong with goto. It's a useful tool to have, when it's needed. But it's not a hammer. Nor should it be used by one...
Roaming status: Testing and documentation
Spike
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK
Contact:

Post by Spike »

recent qcc compilers have gotos too.
Post Reply