1 / 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. Arkham Horror Virtualization Project. Brief Introduction. Virtualization effort of Arkham Horror Board Game

lavada
Download Presentation

Arkham Horror Virtualization Project

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Developed by Kaleb Houck, Zack Kimball, Douglas Drobny, Aaron Phillips, Miguel Ramirez, Ben Adler, Premsagar Donga, Ryan Savage, Gary Hollingshead, WenlongHuang Arkham Horror Virtualization Project

  2. 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.

  3. Combat (Collaboration)

  4. Combat (Activity)

  5. Sealing a Gate (Sequence)

  6. Dice Demonstration

  7. Arkham Event Mythos Common Item Decks Card Many to many relationship

  8. ############################# # 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 lMythosDeck local lArkhamEventDeck local lOtherworldEventDeck local lNormalItemDeck local lMagicItemDeck local lSpellDeck local lSkillDeck local lHenchmenDeck

  9. START MENU

  10. Movement Activity Graph

  11. 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

  12. Samples

  13. 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

  14. 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.

  15. 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 Table • Contains 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.

  16. Environment Class Player Table PlayerTable[“Player1”].GetStat(“MaxStamina”) Player-Character class BaseStatsTable

  17. Collaboration diagram

  18. Sequence diagram

  19. 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

  20. 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

  21. Zoomed out Map Game Display Player clicks the zoom icon Player clicks on map Investigator Stats Display Player clicks the investigator Main Game Display Player clicks the investigator Player clicks return Equipment Stats Display Player clicks an item in the list

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

  23. Chatbox

  24. Chatbox

  25. Chatbox

More Related