GRIMM Choose-Your-Own-Story Language Mike Lenner Billy Liu Mariya Nomanbhoy Becky Plummer.

Slides:



Advertisements
Similar presentations
CPSC 388 – Compiler Design and Construction
Advertisements

Introduction To Compilers And Phase 1 Inside a compiler. Inside a C-- compiler. The compilation process. Example C-- code. Extended Backus-Naur.
1 Mooly Sagiv and Greta Yorsh School of Computer Science Tel-Aviv University Modern Compiler Design.
ICS103 Programming in C Lecture 1: Overview of Computers & Programming
Lecture 1: Overview of Computers & Programming
BROOM: A Matrix Language Chris Tobin Michael Weiss Gabe Glaser Brian Pellegrini.
WPSM Programming Language A simple language that transform simple data structure into complex xML format Wai Y. Wong Peter Chen Seema Gupta Miqdad Mohammed.
GodMode Team OneUp 1. Joe Ennever - Systems Integrator Zack Sheppard - Language Guru Nic Borensztein - Project Manager Danny Hertz - Systems Architect.
Supplement 02CASE Tools1 Supplement 02 - Case Tools And Franchise Colleges By MANSHA NAWAZ.
EMDL Extended Motion Description Language. EMDL vs. MDL.
Cs164 Prof. Bodik, Fall Symbol Tables and Static Checks Lecture 14.
Programming. Software is made by programmers Computers need all kinds of software, from operating systems to applications People learn how to tell the.
Sequencing Miss Regan. Blood Hound  Does anyone know what the Bloodhound project is?  Video 1 Video 1  Video 2 Video 2  Link to website Link to website.
CSC 8310 Programming Languages Meeting 2 September 2/3, 2014.
ANTLR with ASTs. Abstract Syntax Trees ANTLR can be instructed to produce ASTs for the output of the parser ANTLR uses a prefix notation for representing.
ANTLR.
CSCI 101 Introduction to Software Development and Design.
M1G Introduction to Programming 2 1. Designing a program.
Creative Commons Attribution 3.0 creativecommons.org/licenses/by/3.0 Key Abstractions in Game Maker Foundations of Interactive Game Design Prof. Jim Whitehead.
2.2 A Simple Syntax-Directed Translator Syntax-Directed Translation 2.4 Parsing 2.5 A Translator for Simple Expressions 2.6 Lexical Analysis.
THE HOG LANGUAGE A scripting MapReduce language. Jason Halpern Testing/Validation Samuel Messing Project Manager Benjamin Rapaport System Architect Kurry.
Getting Started with ANTLR Chapter 1. Domain Specific Languages DSLs are high-level languages designed for specific tasks DSLs include data formats, configuration.
Chapter 1 P. 1 Writing Windows applications with Visual Basic Figure 1.1 The first program works as follows: (These operations can be performed in any.
COP4020 Programming Languages
Introduction to Visual Basic. Quick Links Windows Application Programming Event-Driven Application Becoming familiar with VB Control Objects Saving and.
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
Parser-Driven Games Tool programming © Allan C. Milne Abertay University v
Boardr The Racing Board Game Creation Language. Project Manager: Eric Leung Language and Tools Guru: Shensi Ding System Architect: Seong Jin Park System.
Chapter 10: Compilers and Language Translation Invitation to Computer Science, Java Version, Third Edition.
PYTHON. Python is a high-level, interpreted, interactive and object- oriented scripting language. Python was designed to be highly readable which uses.
{ Graphite Grigory Arashkovich, Anuj Khanna, Anirban Gangopadhyay, Michael D’Egidio, Laura Willson.
CSC 338: Compiler design and implementation
Compiler course 1. Introduction. Outline Scope of the course Disciplines involved in it Abstract view for a compiler Front-end and back-end tasks Modules.
The Software Development Life Cycle. Software Development SDLC The Software Development Life-Cycle Sometimes called the program development lifecycle.
LANGUAGE AND TOOLS GURU S UHAN CANARAN PROJECT MANAGER A NDREAS NILSSON SYSTEM ARCHITECT A KSHAT SIKARWAR SYSTEM INTEGRATOR E RIC SCHMIDT TESTER AND VALIDATOR.
1 Compiler Construction (CS-636) Muhammad Bilal Bashir UIIT, Rawalpindi.
Interpretation Environments and Evaluation. CS 354 Spring Translation Stages Lexical analysis (scanning) Parsing –Recognizing –Building parse tree.
Review 1.Lexical Analysis 2.Syntax Analysis 3.Semantic Analysis 4.Code Generation 5.Code Optimization.
Test Environment Algorithm Program Requirements/ Enhancements Analyze the Problem and Design a Solution Programming Software Translates the Source Code.
Unit-1 Introduction Prepared by: Prof. Harish I Rathod
1.  10% Assignments/ class participation  10% Pop Quizzes  05% Attendance  25% Mid Term  50% Final Term 2.
Towards the better software metrics tool motivation and the first experiences Gordana Rakić Zoran Budimac.
1. 2 Preface In the time since the 1986 edition of this book, the world of compiler design has changed significantly 3.
1 Compiler Construction (CS-636) Muhammad Bilal Bashir UIIT, Rawalpindi.
1 Compiler Design (40-414)  Main Text Book: Compilers: Principles, Techniques & Tools, 2 nd ed., Aho, Lam, Sethi, and Ullman, 2007  Evaluation:  Midterm.
. n COMPILERS n n AND n n INTERPRETERS. -Compilers nA compiler is a program thatt reads a program written in one language - the source language- and translates.
Chapter 1 Introduction Major Data Structures in Compiler
 A plan of attack for your games content  Or (more specifically)  A detailed description of all games mechanics, objects, characters, stats, ect… that.
M1G Introduction to Programming 2 5. Completing the program.
The Model of Compilation Natawut Nupairoj, Ph.D. Department of Computer Engineering Chulalongkorn University.
What am I? while b != 0 if a > b a := a − b else b := b − a return a AST == Abstract Syntax Tree.
C H A P T E R T W O Linking Syntax And Semantics Programming Languages – Principles and Paradigms by Allen Tucker, Robert Noonan.
What is a compiler? –A program that reads a program written in one language (source language) and translates it into an equivalent program in another language.
CS223: Software Engineering
CSC 4181 Compiler Construction
Chapter – 8 Software Tools.
1 Asstt. Prof Navjot Kaur Computer Dept PRESENTED BY.
THRLL Programming Language Aimee Sanchez Neetha Sebastion Kapil Verma Hemanth Murthy Michael Seaman.
Compiler Design (40-414) Main Text Book:
Lexical and Syntax Analysis
Compiler Construction (CS-636)
ICS103 Programming in C Lecture 1: Overview of Computers & Programming
Basic Program Analysis: AST
Lecture 2: General Structure of a Compiler
Preparing for MUPL! Justin Harjanto
Compilers B V Sai Aravind (11CS10008).
CS 3304 Comparative Languages
Chapter 10: Compilers and Language Translation
Programming Logic and Design Eighth Edition
Presentation transcript:

GRIMM Choose-Your-Own-Story Language Mike Lenner Billy Liu Mariya Nomanbhoy Becky Plummer

What is GRIMM Named for famous storytellers – Grimm Brothers Named for famous storytellers – Grimm Brothers Designed to make creating an interactive, first-person role playing game easy and intuitive Designed to make creating an interactive, first-person role playing game easy and intuitive No programming experience required – language based on free-form English No programming experience required – language based on free-form English Reallocates the majority of effort where it belongs – the story writing Reallocates the majority of effort where it belongs – the story writing

Language Outline First section of GRIMM programs are declarations First section of GRIMM programs are declarations Developer declares scenes within a story. Each scene contains standard set of properties Developer declares scenes within a story. Each scene contains standard set of properties –Name (“The Living Room”) –Description (“You are standing in a room with green walls”) –Picture (“room.jpg”) –Items (couch, notebook) –Exits (hallway, kitchen) Developer may also declare items and characters Developer may also declare items and characters

GRIMM Example - Declarations scene castleGate scene courtYard castleGate name “The Castle Gate” castleGate description “You are standing in front of a large wooden gate. The gate is locked and there are two soldiers preventing your passage.” castleGate exit courtYard courtYard name “Castle Court Yard” courtYard description “You have entered the castle court yard. You see that a joust tournament is about to begin.” courtYard contains item lance courtYard contains item helmet character Merlin Merlin holds item staff

Language Outline Second part of GRIMM program is the actual story using these declared scenes, characters and items. Second part of GRIMM program is the actual story using these declared scenes, characters and items. Control flow constructs guide user through declared scenes based on user input. Control flow constructs guide user through declared scenes based on user input. Conditionals test the state of the user (what scene is occupied, what items are owned). Conditionals test the state of the user (what scene is occupied, what items are owned).

GRIMM Example – Control Flow while user inside dungeon read user input if user says “unlock cage door” and not user has key then say “You cannot unlock the door without the key.” otherwiseif user says “unlock cage door” and user has key then say “The door is unlocked and you slip through the cage unnoticed. You move quickly to the treasure room next door.” goto treasureRoom otherwiseif user says “open treasure chest” then say “You open the chest and you see a silver key.” read user input if user says “take key” then user pickup key say “You took the key” otherwise say “The chest has closed shut on its own.” endifendifendwhile

Game Play Story is played out by displaying current scene to the user, then waiting for input. Story is played out by displaying current scene to the user, then waiting for input. Many such games are text based – GRIMM creates graphical based applications. Many such games are text based – GRIMM creates graphical based applications. User interacts with a GUI console User interacts with a GUI console –shows the current state of the game as well as allows for user interaction.

GUI Components Scene title Scene image Scene description Non-hidden scene exits User items Non-hidden scene items User – Game interaction scene castle scene name “Castle Path” scene description “You are standing on a dirt path. Ahead of you in the distance you see the Castle of the North Kingdom. You think you hear something that sounds like trumpets blaring way off in the distance. To your left is a small dagger.” scene image “castle.jpg” scene castle contains item dagger scene exit gate if user says “pick up dagger” pickup dagger endif

Scene Update slay dragon

GRIMM Implementation Lexer – separate text into token stream Lexer – separate text into token stream Parser – builds syntactically correct AST Parser – builds syntactically correct AST Walker – builds symbol table while checking for semantic errors Walker – builds symbol table while checking for semantic errors Translator – walks AST generating Java code based on each node Translator – walks AST generating Java code based on each node Runtime Environment – Java classes used by Translator in creating application code Runtime Environment – Java classes used by Translator in creating application code

GRIMM Implementation

Runtime Environment

Lessons Learned Understand big picture before coding begins Understand big picture before coding begins Split up responsibilities earlier in the project Split up responsibilities earlier in the project Know the scope of your language from the beginning and try not to deviate Know the scope of your language from the beginning and try not to deviate Difficult to maintain free-from English syntax when building the compiler Difficult to maintain free-from English syntax when building the compiler

Summary GRIMM is a useful tool for the storywriter GRIMM is a useful tool for the storywriter –Less time spent on coding, more on developing storylines. –A lot can be accomplished without a lot of code. Maintained somewhat intuitive syntax Maintained somewhat intuitive syntax Extremely successful team collaboration Extremely successful team collaboration