Afternoon everyone, I am currently an IB Student in Prince George's County, Maryland. As a part of our I.B. Diploma requirement, we are required to complete the Extended Essay. The Extended Essay is a 4,000 word essay that involves us coming up with a research question in any area of focus that we choose. Now, I want to get into Computer Programming once and if I get into college. With that, I decided to do an essay in the area of Computer Science, specifically in Computer Programming/Coding. I came up with the research question: To what extent has efficient computer coding/programming played a role in the development of realistic games? (i.e. physics implementation in the Battlefield Game series) Now, I have written in excess of 2,000 words, but the thing is that I am not absolutely sure if all my information is correct or if I am on the right track. Part of completing the Extended Essay involves having an adviser to help you out. The only thing is that the few computer experts in my school have their credentials in the physical components of computers. My goal here is to paste what I have here and hope that some sort of an expert can read and help me to correct anything that I may have wrong or offer me some guidance as to where to go next. However, I DO NOT want anyone to write any thing for me or do the essay for me, so here goes:
Introduction
(Incomplete)
Whether you as the reader know it or not, we have all come into contact with code and have used it ourselves. When you were in the first day of your primary school life, you were expected to read the class rules to follow and be able to understand them to the best of your ability. What most people don’t realize is that they have just coded in a real world sense.
It’s more than likely that a person has had that moment when they’ve turned on an old computer and a blue or black screen popped up with jumbled mess. That jumbled or muddled mess is, in fact, lines of code. Just as one reads a manual to understand how to build that new stand for their T.V., a computer needs its lines of code in order to understand how to do things like move the mouse on the screen when the sweat glands on the padding of the user’s fingers comes into contact with the track-pad.
Code (Still iffy on this)[j1] [j2]
In order to understand computer coding, the concept of coding in general, must be [j3] defined. Dictionary.com (n.d.) and the Oxford dictionary website (n.d.) provide this definition: “A system of words, letters, figures, or other symbols used to represent others, esp. for the purposes of secrecy” (par. 1) or from the Merriam-Webster (n.d) which defines code as “a system of symbols (as letters or numbers) used to represent assigned meanings”. The basic concept of code can be defined as an interpretation in order to understand something. It’s worth noting that in this context, the portion of the definition that states “especially for the purpose of secrecy” in the first definition, should be ignored. Focus should be, instead, pertained to the portion that states a system of words, letters, figures, and/or symbols. Now with the base understanding of code, one can begin to understand computer code[j4] . Valenti (n.d) defines (computer) code as “written computer instructions, the term code being somewhat colloquial” (par .1) and to develop a deeper understanding, an added definition from Simonov (n.d) and Princeton University (n.d.) define computer code as “the symbolic arrangement of data or instructions in a computer program or the set of such instructions” (par. 1). The key focus to pull from these definitions is that computer code has to do with instructions. ‘Written’ and ‘Symbolic arrangement’ can be used interchangeably to simply mean a list of instructions, only that these are instructions for a computer to understand in order to perform a function. Computer code in its simplest form is known as binary code. Binary code is simply a system of 1’s and 0’s that arbitrarily mean on and off. Binary code start out as rows of eight 0’s. Turning anyone of the 0’s “on,” or to a 1, produces a reaction from the computer. The reactions can vary based on how the creator of the computer created scenarios in which could be stimulated by variations in the binary code. The set of list of instructions in the computer code are those reactants to the changes in the binary code. These could be expanded on further, but in context it wouldn’t be necessary and while computer code could provide more than a strong enough backbone to delve into proving the thesis, it is in the best of interest to go deeper with the heart and true core focus of the thesis: Source code.[j5]
Source Code (Coup de Gras part 1)
The purpose of defining of code and all of the subsequent branches is so that a connection can ultimately be made in how it is used to create a game. As a precaution it should be noted that games will be referred to what they are in reality, as programs. “When you create a program, you tell the computer what to do with code. Because the computer can't understand speech and because hitting it — no matter what emotional value that has for you — does little to the PC, your final line of communications is to write the computer a note — a file on disk” (Gookin, 2004, p. 12). It has been determined that computers work on a system of 1’s and 0’s. While a person may be able to understand and learn binary code, the prospect of trying to build a useful program to take advantage of current technology and that requires thousands of lines of code in binary is not feasible, seeing as the letter “A” on its own is 01000001. Forefathers of operating systems and programming languages most likely decided that the future of computers would only become concrete if the tools used to make them function would be simpler to use. From this, programming languages were developed, but going back the codes used to start creating programs are known as source code. Source code is defined as “a computer program in its original programming language (as FORTRAN or C) before translation into object code usually by a compiler” (Merriam-Webster). Further expounded on by techterms.com (2007), “Source code, often referred to as simply the "source" of a program, contains variable declarations, instructions, functions, loops, and other statements that tell the program how to function”. Source code is very similar to the earlier mentioned computer code except that source code is seldom written in binary. Source code is the foundation of the program.
That foundation includes the stated proponents of source code:
· Variable declarations: (Example: In the function [int year = 2006;] the computer is made aware that the integer, or number for the year is 2006. The part of the function that is the variable declaration is the portion in red. Variable declarations are usually separated by mathematical symbols and can be likened to the end product of a long math equation such as x = cos 37);
· Instructions: simply what the computer should do in a format that can be understood by a computer novice. (Example: the instruction for [int year = 2006;] is “anything labeled year should be numbered as 2006.);
· Functions, functions are various specialized combinations of things such as variable declarations created in order to elicit a response. (Example: [int year = 2006;] Everything in the bracket is collectively known as the function.
· Loops are functions that work together to repeat actions when conditions are met.
(Example:
if (2 == 5)
{
console.log “You are smart!”;
}
else if (2 + 3 == 5)
{
console.log “You are actually smart!”;
}
else
{
console.log “You are not smart!”;
}
The “else if” serves as the loop. In instruction form, the function states “if 2 is equal to 5, then the computer should alert you that you are smart, but if that isn’t true and if 2 + 3 = 5, the computer should let you know that you are actually smart. Then, it goes on to say that if that isn’t even true the computer should let you know that you are not smart.”)
Furthering functions[j6] [j7] , source codes may contain the “if else” conditionals (such as the example provided in the loop) which basically mean that if this condition is met, do this or else do this. Another brief example of the function’s use can be derived from the software being used to produce this text, Microsoft Word or Word for shorthand. Word may or may not use the “if else” conditional to determine whether a red line signifying a spelling error should be positioined under the “positioned” that had just been mentioned. Booleans are another example of source code. Booleans simply work by using true or false (in reality, 1’s and 0’s, ons or offs) to determine whether a reaction should be performed if a condition is met or an event is triggered. The same way the “if or else” may be used, Booleans can be also used to determine whether the spelling error line would appear. While source code is very important, it is almost useless on its own. In order for them to be put into proper use in the creation of a program, the must be first converted. This task is accomplished by the compiler.
Compiler (Coup de Gras part 2)
Using a text editor (such as notepad) one creates what's called a source code file. The one special thing about this file is that it contains instructions that tell the computer what to do, that being the source code we covered in the previous section. A computer simply can’t understand "Make a funny noise," and the matter of fact is that instructions in a language the computer understands must be created. In this case, the instructions are written in the FORTRAN and C language, which are to be covered in a later section. Source code is almost definite. It must be created and converted before it can be edited to produce different reactions in functions. Once the source code has been created, it is saved onto the computer as a file. Gookin (2004) explains the use of the source code file: “After the source code is created and saved to disk, it must be translated into a language the computer can understand. This is a job for the compiler to do. The compiler is a special program that reads the instructions stored in the source code file. The compiler runs through each instruction and translates it into the secret code understood only by the computer's microprocessor” (pg. 14). As mentioned in the introduction, when an old computer is turned on, code appears on the screen and that code is mostly source code. What hasn’t been mentioned is that there is also a point where a pause is seen, as if the computer is thinking. Sometimes it may tell you to press the enter key and that enter key is sort of a flush type mechanism. That source code is “flushed” into the compiler. Simply, the compiler is the tool that converts everything in the source code into 1’s and 0’s. All the Booleans, conditionals, letters, and even numbers are converted into binary so that the computer can understand it. A definition from Simonov (n.d.) states that a compiler is “a program that translates another program written in a high-level language into machine language so that it can be executed” (par. 1). That high-level language is what we mentioned earlier as the C and/or FORTAN languages. These languages, among others, are the languages used when creating a program, but since they are especially relevant to the programming stage of the program creating process, they will not be expanded on. What one can understand from Simonov’s definition is that a compiler takes a computer programming language, often and possibly only in English, and converts it into the now often mentioned 1’s and 0’s. The compiler serves as the translator between the user or program and the microprocessor of the computer. When its task is completed the compiler produces a new code file, known as an object code file. The programmer has written the code and the compiler has done its job, but the program has not been completed. Thus, the program creating process is taken to the next and almost most important process that differentiates YouTube from Solitaire: the programming phase.[j8]
Creating the Game
Coding in Video Games (Pretty Good)
Today’s games are complex and have to run multiple lines of object code in order to work properly. One such gaming technology that makes the use of complex object code apparent is the Radiant A.I. system: “The Radiant AI technology introduced in The Elder Scrolls IV: Oblivion went a long way toward making the NPC (non-playable character) act in realistic ways. If you followed a citizen through his daily activities, you would likely witness him or her eating breakfast, setting out to work the land, stopping by the pub for a pint after work, and then returning home to hit the sack” (Bertz, 2011, par. 9). The goal of the radiance engine was to implement realism into the games that used it and for years something like the radiance engine was impossible to create. Gaming systems, which are themselves computers, have the physical capabilities today to allow themselves to run these mountainous amounts of code. But before any more progress can be made in proving the thesis, one must understand the components in making a game realistic, so we will go more in depth with coding, or the implementation of code. According to dictionary.com the act of writing something like source code, or coding, is defined as “translating (a program) into language that can be communicated to the computer” (Goli, 2013, par.1). Coding is necessary for the game creation process because computers need to know what the player simply wants. With the specific arrangements of source code made. When you touch a coin in the Mario video game series, the computer doesn’t process that you have taken that coin, there is a code written for this and that will be covered more in depth when game programming is discussed and that is what we’ll be transitioning into next.