Unformatted text preview:

Mapwad A Modeling Language Final Report Ben Smith bhs16 columbia edu AvrumTilman amt77 columbia edu Josh Weinberg jmw211 columbia edu Ron Weiss ronw cs columbia edu Traditionally 3D modeling tools have taken the form of graphical editors Advances in graphics technology have made it possible to create even more detailed models greatly increasing the complexity of the modeling process We have developed a computer language called Mapwad that can be used to algorithmically generate virtual environments Table of Contents 1 Whitepaper 5 1 1 Introduction 5 1 2 Goals 5 1 2 1 Ease of use 6 1 2 2 Automation 6 1 2 3 Flexibility 6 1 2 4 Extendability 6 1 3 Example Applications 6 1 3 1 Simple levels 6 1 3 2 Advanced levels 6 1 3 3 Interior modeling 7 1 3 4 Simulation 7 1 4 Sample Code 7 2 Mapwad Tutorial 9 2 1 Compilation 9 2 2 Basic Example 9 2 3 Basic Programming Constructs 9 2 4 Advanced Example 10 2 5 Complex Example 11 3 Language Reference Manual 14 3 1 Language Semantics 14 3 1 1 White space and Comments 14 3 1 2 Identifiers Variable Function 14 3 1 3 Numbers 14 3 1 4 Strings 14 3 1 5 Null 15 3 1 6 Operators 15 3 1 7 Keywords 15 3 1 8 Other Tokens 15 3 2 Program Layout 15 3 3 Variables 15 3 3 1 Explicit User Defined Variables 16 3 3 2 Implicit Variables 16 3 4 Types Objects 17 3 4 1 Basic Types 17 3 4 2 Advanced Types Objects 17 3 4 3 Arrays 21 3 5 Statements 22 2 3 5 1 Operator Statements 23 3 5 2 Assignment 24 3 5 3 Control Flow 24 3 6 Functions 26 3 6 1 Structure 26 3 6 2 Invocation 27 3 6 3 Returning 27 3 6 4 Map Function 28 3 6 5 Built in Mapwad Functions 28 4 Project Plan 31 4 1 Planning 31 4 2 Development 31 4 3 Testing 31 4 4 Programming Style 31 4 5 Tools 32 4 6 Timeline and Project Log 33 4 7 Group Member Responsibilities 33 5 Architectural Design 35 5 1 Block Diagrams 35 5 2 Architecture Description 35 5 2 1 Mapwad Compiler Components 35 5 2 2 Mapwad Compiler Components by File 37 6 Test Plan 39 6 1 Approach to Testing 39 6 2 Testing the Parser 39 6 3 Testing the Walker 41 6 4 Testing the Internals 44 6 5 Testing Code Generation 47 6 6 Testing the Integrated Compiler 48 7 Lessons Learned 49 7 1 Ben Smith 49 7 2 Avrum Tilman 49 7 3 Josh Weinberg 50 7 4 Ron Weiss 50 8 Appendix 52 3 8 1 Code 52 8 1 1 Makefile 52 8 1 2 Lexer Parser Walker 52 8 1 3 Compiler Entry Code 62 8 1 4 Built In Functions 66 8 1 5 Reserved Word Wrappers 86 8 1 6 Object Constructor Wrappers 88 8 1 7 Scope Handler 92 8 1 8 Mapwad Data Type Handling 94 8 1 9 Advanced Types 98 8 1 10 Basic Types 132 8 1 11 Internal Processing 143 8 2 Mapwad Code Samples 169 8 2 1 bigmaze mapwad 169 8 2 2 hallways mapwad 171 8 2 3 recursive2 mapwad 173 8 2 4 wavyhalls mapwad 174 8 3 Sample Mapwad java Output 176 4 1 Whitepaper 1 1 Introduction Beginning in the early 1990 s with games such as Wolfenstein 3D 3D video games especially first person shooters FPS have become enormously popular DOOM a FPS written by id Software was probably the most popular game of the first half of the 90 s The immense popularity of DOOM led to a stream of copycats trying to cash in on the FPS craze Slightly more advanced games such as Heretic Duke Nukem 3D and Descent were released shortly after DOOM However id would not be outdone In 1996 id released Quake a far more advanced and visually appealing game Aside from its success on the graphics front Quake revolutionized the concept of multiplayer gaming by allowing people to play deathmatch games against each other over the Internet The ability for people to challenge friends remotely also served to boost Quake s popularity The game was so successful that even today 7 years after its initial release one can still find Quake game servers hosting large multiplayer games id went on to release two very successful sequels to Quake and even licensed their 3D engine technology to other game developers Communities revolving around modifications of id Software s games have existed for years on the Internet File formats and level specifications were widely available shortly after the release of DOOM and Quake Enthusiasts around the world used this information to create level editors and work on creating new content for use in the games Their efforts received a boost in 1997 when id released the source code for DOOM under the GNU General Public License Two years later they followed by releasing the Quake source as well The tremendous online following originally created by the multiplayer capabilities of Quake still exist today precisely because of id s willingness to allow fans to modify and extend their games Despite the interest in modifying 3D games newcomers are put off by the large learning curve they need to cross to be able to create interesting modifications The available tools mostly in the form of graphical editors are very complex to learn The motivation for MAPWAD is to create a straightforward yet powerful language for creating levels for games such as Quake 1 2 Goals The goal of this project is to design a language that will generate levels for a 3D game such as DOOM or Quake We will be using the Quake rendering engine to represent the MAPWAP created models because of all the open source code and tools that are available Beyond gaming the ability to algorithmically generate 3D interactive environments is useful for any virtual reality application Using MAPWAD designers will be able to take advantage of algorithmic programming constructs to create such environments In other words MAPWAD will make a simple description yield a complex result what used to take an hour to do by hand will be done in just a few lines of MAPWAD 5 1 2 1 Ease of use MAPWAD will provide a high level approach to virtual environment design Instead of defining polygons based on their coordinates in 3D space MAPWAD will describe complicated scenes as collections of objects 1 2 2 Automation MAPWAD will harness the power of loops and conditionals to provide the user with the ability to generate regular structures For example instead of having to define every stair as a separate platform MAPWAD will allow for the use of loops to create a staircase iteratively 1 2 3 Flexibility MAPWAD will not be limited to production of video game levels The generic nature of the modeling language will allow MAPWAD to be used for other tasks such as interior modeling design landscape …


View Full Document

Columbia COMS W4115 - Mapwad A Modeling Language

Documents in this Course
YOLT

YOLT

13 pages

Lattakia

Lattakia

15 pages

EasyQL

EasyQL

14 pages

Photogram

Photogram

163 pages

Espresso

Espresso

27 pages

NumLang

NumLang

6 pages

EMPATH

EMPATH

14 pages

La Mesa

La Mesa

9 pages

JTemplate

JTemplate

238 pages

MATVEC

MATVEC

4 pages

TONEDEF

TONEDEF

14 pages

SASSi

SASSi

16 pages

JTemplate

JTemplate

39 pages

BATS

BATS

10 pages

Synapse

Synapse

11 pages

c.def

c.def

116 pages

TweaXML

TweaXML

108 pages

Load more
Loading Unlocking...
Login

Join to view Mapwad A Modeling Language and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Mapwad A Modeling Language and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?