160 likes | 299 Views
DMGL: Dungeon Map Generation Language (Team 12). Yi Zhang yz2414 (Project manager) Shuaishuai Nie sn2479 (Language Guru) Xuanchen Tang xt2128 (System Architect) Lewis Flanagan lrf2123 (System Integrator) Xiaohu Li xl2302 (Test & Validation). What is DMGL? (Yi Zhang).
E N D
DMGL: Dungeon Map Generation Language(Team 12) Yi Zhang yz2414 (Project manager) Shuaishuai Nie sn2479 (Language Guru) Xuanchen Tang xt2128 (System Architect) Lewis Flanagan lrf2123 (System Integrator) Xiaohu Li xl2302 (Test & Validation)
What is a Pen and Paper Role-Play Game? • Played with dice, notes detailing various characters, monsters, and villains, and maps. • One player, usually called the Dungeon Master or Game Master, controls all the monsters, non-player characters, the environment, etc. The other players each control a single “hero” character. • Usually the Dungeon Master is responsible for coming up with the storyline, challenges and maps the group uses. • Producing these materials can be commitment of several hours a week. • DMGL is intended to reduce the time required to create maps for these games.
Language Features (ShuaishuaiNie) • New Types Introduced in DMGL • Room • Door • Path • Feature
Language Features (ShuaishuaiNie) • Simple and Understandable Statement Structure Sample Code: call init_map (20, 20) create room r1 (3,3) to north; create path p1 (3) to east; create path p2 (1) to east; create path p3 (3) to south; create room r2 (3,3) to south; remove p2; show_map ();
Language Features (ShuaishuaiNie) • Introduce loop to facilitate the construction Sample Code: call init_map (30, 7); call start (1, 3); for (inti = 0; i < 4; i++){ create room anonymous (3,3) to south; if (i == 3) quit; create path anonymous (2) to south; } call show_map ();
Language Features (ShuaishuaiNie) • Include random method and user defined function Sample Code: call init_map (20,20); create room myroom (3, 3) to west; intfirstDirection = call randir (); create path mypath1 (2) to firstDirection; create path mypath2 (1) to firstDirection; direction newDirection = call randir (); while (newDirection == call oppositeDir(firstDirection) ) newDirection = call randir (); create door d1 () to newDirection; create room r2 (3,3) to newDirection; call show_map (); function oppositeDir (direction one):direction{ return ((one + 2) % 4); }
Self made library to support backend logic (Xuanchen Tang) Functions.java Room.java Door.java Path.java
Test and Validation (Xiaohu Li) • Test methods: black box • Test levels: • Unit testing • Integrated testing • System testing • 111 test cases, over 1000 lines • Automated test script
Demo (Lewis Flanagan) [ ] This Slide Left Intentionally Blank
Potential Future Work (Lewis) • Include ability to check area to see if it is empty (call scan (x, y)) • Add the ability to organize map objects into collections that can be acted on as a whole • Convert DMGL into an interpreted language • Add local variables • Add ability to include other DMGL source files in a program, thus allowing user to import libraries of functions • Give DMGL an applet as a GUI and make it available online
Summary • Lesson learnt • Start early • Regular meeting is essential