developed by kaleb houck, zack kimball, douglas drobny, aaron phillips, miguel ramirez, ben adler,...

27
ARKHAM HORROR VIRTUALIZATION PROJECT Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong Huang

Post on 15-Jan-2016

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

ARKHAM HORROR VIRTUALIZATION PROJECT

Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler,

Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong Huang

Page 2: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Brief Introduction Virtualization effort of Arkham Horror Board Game Will be developed for two platforms: Linux and Table

System Our team will be doing development using Agile

methods. Our project will be developed in a highly modular

fashion using Unicon. We will be using a virtual development environment

called Assembla. We will be discussing in this presentation what has

been done by the three sub teams : Team Gary, Team Doug, and Team Ben.

Page 3: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Combat (Collaboration)

Page 4: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Combat (Activity)

Page 5: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Sealing a Gate (Sequence)

Page 6: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

DICE DEMONSTRATION

Page 7: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong
Page 8: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Mythos Common Item

Arkham Event

Decks

Card

Many to many relationship

Page 9: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

############################## This is a record of a card. Opt-int to use records instead# of classes. The fields of a record are accessed the same way# (with a '.') and can be procedures. # name = Card name# text = Card text# deck = Deck the card belongs to# frontPic = Picture to put on front of card# backPic = Picture to put on the back of the card# total = Number of cards left in deck to draw or total cards to put in deck# cUse = link to procedure that gets called when used# cDrop = link to procedure that gets called when dropped# cPickup = link to procedure that gets called when picked up# handCost = how many hands needed to use# exhausted = yes or no for exhausted or not##############################

record Card(name, text, deck, frontPic, backPic, total, cUse, cDrop, cPickup, handCost, exhausted)

local lMythosDecklocal lArkhamEventDecklocal lOtherworldEventDecklocal lNormalItemDecklocal lMagicItemDecklocal lSpellDecklocal lSkillDecklocal lHenchmenDeck

Page 10: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

START MENU

Page 11: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

MOVEMENT ACTIVITY GRAPH

Page 12: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Location Pathing

Locations have a list of all adjacent locations

Calculates all paths of length 9 Removes paths without destination Truncates locations after the destination Finds shortest list

Page 13: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Samples

Page 14: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Environment and Player Character Classes Stat Tables

Houses many relevant player stats within an easily accessed table Two Tables: BaseStatsTable and BuffStatsTable

Buff System Allows for handling of multiple independent stat bonus effects with limited durations. The Buff Object consists of:

○ Name: ○ Expiration: Names of the period in which this buff is to expire

Common expirations are:- Combat: These buffs are discarded after each combat turn- Turn: These buffs expire at the end of the player’s current turn- Phase: These buffs expire at the end of the current phase.- Upkeep: These buffs expire at the start of next Upkeep Phase- Passive: These buffs expire when the item giving the benefit is discarded (handled by discard()

method)

○ Effects(list): the list of 1 or more stat modifications for this given buff It is a list of pairs [ “stat”, magnitude ] , where the “stat” is the key for the proper stat in the StatTables

and the magnitude is the (+/-) integer.

○ Conditions(list): used to allow for the buffs that have conditions attached. Example: [“type”, “cultist”] implies the buff only affects cultist type creatures Example: [“locationtype”,”street”] implies this buff only works when you are tested and found to be in a

street

Page 15: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Player Character Class Stat Sliders

Implemented in two parts: BaseStatsTable and three integer variables:○ Mobilityslider: controls the slider of Speed

Sneak○ Combatslider: controls the slider of Fight Will○ Mentalslider : controls the slider of Lore Luck○ Each of these integers is contained within the

range of 0 to 3 When the character is initialized, their stats in

the BaseStatsTable is set to the value on the far left, and the sliders are all set to a value of 0

StatusTable There are many toggles that can be placed on

your character, these have all been migrated to the StatusTable, under their appropriate keys.

Page 16: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Environment Class Player Table

Contains specific instances of the player character class○ The keys for these are player1 through player’n’ in order to

prevent odd player names from interfering with the table’s function

Deck TableContains specific instances of the deck class, accessed

by giving a ‘key’ that uniquely identifies the deck○ Drawing a common item is as easy as

DeckTable[“common”].DrawCard()○ This table has the potential to hold every deck, from items

to encounter cards, to the gate and monster decks.

Page 17: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Key Value

“Player1” <class> object

“Player2” <class> object

…. ….

“Player n” <class> object

…. …..

variable Value

Name “Bobby”

…. ….

BaseStatsTable

<table> object

…. ….

BuffList <list> object

BuffStatsTable <table> object

Etc.. Etc…

Player-Character class

Player Table

Key Value

MaxStamina 6

MaxSanity 4

… …

Speed 2

Sneak 0

Etc.. Etc..

BaseStatsTable

Environment Class

Variable Value

PlayerTable <table> object

DeckTable <table>object

…. ….

CurrentPlayer <string>

CurrentPhase <string>

PlayerTable[“Player1”].GetStat(“MaxStamina”)

Page 18: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong
Page 19: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Collaboration diagram

Page 20: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Sequence diagram

Page 21: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

method OnZoom(ev)

w:=BoardImage.w_spec

h:=BoardImage.h_spec

x:=&x-BoardPanel.x_spec

y:=&y-BoardPanel.y_spec

if (BoardImage.w=BoardPanel.w_spec) then {

BoardImage.set_size(w*5, h*5)

x:=x*5-BoardPanel.w_spec/2

y:=y*5-Boardpanel.h_spec/2

MAXx:=BoardImage.w_spec-BoardPanel.w_spec

MAXy:=BoardImage.h_spec-BoardPanel.h_spec

if (x<0) then x:=0

if (y<0) then y:=0

if (x>MAXx) then x:=MAXx

if(y>MAXy) then y:=MAXy

BoardImage.set_pos(-x, -y)

VerticalZoomScrollBar.set_value(50*y/MAXy)

HorizontalZoomScrollBar.set_value(50*x/MAXx)

overlay_set_1.set_which_one(overlay_item_1)

}

else {

BoardImage.set_size(w/5, h/5)

BoardIMage.set_pos(0,0)

overlay_set_1.set_which_one(overlay_item_2)

}

resize()

end

Page 22: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

method OnHorizontalZoomScrollBarPress(ev)

y:=BoardImage.y_spec

MAXx:=BoardImage.w_spec-BoardPanel.w_spec

x:=HorizontalZoomScrollBar.value*MAXx/50

BoardImage.set_pos(-x, y)

resize()

end

Page 23: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Zoomed out Map Game Display

Equipment Stats Display

Investigator Stats Display

Main Game Display

Player clicks on map

Player clicks the zoom icon

Player clicks the investigator

Player clicks return

Player clicks an item in the list

Player clicks the investigator

Page 24: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

CHATBOX

Chatbox is an optional feature wherein the users can chat with each other during playtime.

Page 25: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Chatbox

Page 26: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Chatbox

Page 27: Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, Wenlong

Chatbox