I'm a doctor, not a mechanic
This page covers key concepts of the Unreal Engine.
No building meant to last is built without a foundation. We begin working with foundations before we can speak; our first foundation in the world is reality itself, watching others and attempting to imitate what they do or sound like. These foundations are still built on every day by us as we continue to observe the world, causes, and effects.
UnrealScript is the heart of Unreal Tournament 2003 (hereafter referred to as UT2003 or UT2K3). The language itself is powerful but elegant and simple. Much like learning C++ is easy, learning UnrealScript is easy. Applying C++ requires a knowledge of your underlying operating system, and applying UnrealScript requires an underlying knowledge of UT2K3.
This section is going to cover terms that will be used throughout the rest of the overview. The definitions here will be vague but hopefully enough that you will have a grasp of what's going on when you're reading the remainder of the chapters.
Unreal Tournament 2003 Terms
- The authority of a piece of information has final say in what the information should be. In the case of UT2K3 the server is almost always the authority as to what information is authentic, or what values a variable will hold. If you compare your checking account to a variable, you are a client, and the server is the bank. The bank has the ultimate say in how much money you have in your account, no matter how much you argue.
- Generally speaking this is the player's copy of UT2K3. The client requests information from the server and displays it for the local player but it also passes the local player's choices back to the server.
- A controller is used to control a pawn. Using the chess example from Pawn below you are the controller. If you're playing Battle Chess (tm) then there are two controllers: one, an artificial intelligence controlled by the computer, and two, you. A controller, at its most basic, is simply a class designed to receive input and pass that input on to the game in whatever way, shape, or form is deemed necessary. More: Controller Overview.
- An event is just that: something that occurs outside of the control of the class the event happens in. Windows 95, 98, 2000, etc., are all event driven. Events are notated in UnrealScript with the keyword event. This basically means that at some point in time the Unreal Engine will call this function as a result of something that has occurred. Events can be compared to driving. In non-event driven programming you control the car the entire time you're in it, holding the steering wheel steady and always able to react to any information you manually gather. In event driven programming you would only receive control of the car when a prespecified event occurred, i.e. if a deer runs across the road the onboard car computer would beep you and turn control over to you after passing you some basic information about the deer including its location, speed, and size. More: Event.
- The term native is used in the UT2K3 environment to indicate code that is not written in UnrealScript but is instead written in C/C++ and compiled by Epic. Native items are usually made so because UnrealScript is roughly twenty times slower than C/C++. Crucial pieces of UT2K3 or often used pieces of code are made native to optimize the game. Quite often you'll see the term native magic thrown about: this is usually indicative of a process that is not completely understood. Processes like this are assumed to be handled, at least partially, in native code. More: Native Coding.
- A mod, mutator, map, or any other item meant to be used in UT2K3 is compiled and placed into what's known as a package. These files will usually have a file extension of .u, .utx, .ut2, .usx, or .ukx. A little known fact about UT2K3 is that all of those packages with the different extensions are actually the same: An UT2K3 package. The reason for differing extensions is to help separate out which primarily contain maps, static meshes, animations, or other data. Technically, however, an animation package (official extension: ukx) has nothing stopping it from holding a map (extension: ut2). More: Package
- If you were playing chess instead of UT2K3 the meaning of this word would be obvious. A pawn is any of the pieces you control whether that is a knight, a bishop, a queen, or the namesake of the Pawn: a pawn. A pawn can be moved, controlled, killed, destroyed, manipulated. It is your basic unit of control as a player.
- Replication is a fancy term for taking information from either a client or a server and passing it to the other. Consider this fabricated situation: the server knows that there are four players out of six connected, and it knows about their currently selected weapon, their current ammunition count, their current health, powerups, and any other relevant information about said players. In this particular case it knows this information because it is the authority. How does a client learn about it's current situation? The server tells the client. The method of telling the client the current situation is known as replication. Replication is one of the scariest and most complicated issues surrounding UT2K3 and we will spend a great deal of time on this issue later. More: Replication.
A copy or reproduction; the act or process of duplicating or reproducing something.
- This is the machine running the server for UT2K3. This can be either a dedicated or non dedicated server; a non dedicated server can also be used as a client although performance will suffer. The server has complete control over the game and its variables. It decides what information is final and what can be negotiated.
Please add to this list.
- Terminology - the Unreal dictionary
Tarquin: What is the role of this page? It's too advanced to be a tutorial. It seems to be duplicating Terminology. I suggest the short definitions be folded into Terminology, and longer ones maybe get a page of their own.
OP: "learning C++ is easy" ?? You must be joking. C++ is one of the hardest languages to master (including PROLOG, I would personally say). Learning JAVA is easy, for example. Not C++.
Foxpaw: Perhaps the author of the page considered C++ to be easy to learn.. it is actually a very straightforward language if you have a thorough background in computer science, in my opinion. I could see how some people would struggle with it if they were coming from a different background.
Solid Snake: I think it largely depends on the person. I find C++ ok and not too hard. I guess some people find C++ hard if they came from a graphical area only for example. It depends on your background and how 'intelligent' you are in terms of being able to understand a coding language. Some people will find it harder/easier than others when it comes to learning a new language.
Sweavo: First rule of writing is to know your audience ... in the context of a wiki, it's probably worth inserting a paragraph at the start stating who the page is supposed to help and maybe a little of what it's NOT meant to be... that way the many people who come by, who may edit it, will know the intended direction of the page. OTOH you have players, mappers, artists, modelers, modders, and servermodders. Ok that's a general point, not especially about THIS page...
T1: Why does this page refer to UT2003, not the engine?
Tarquin: My suggestion: move the intro of this page to a new page, Unreal Engine Basics. Move the definitions to Terminology ir subject pages such as Package or Replication. This page can then be deleted.