FreshRSS

Zobrazení pro čtení

Jsou dostupné nové články, klikněte pro obnovení stránky.

How would you implement a map system like WoW?

I'm really struggling with a 'resonable' technical implementation of the map system used by the popular MMO World of Warcraft. Not really sure on a data structure format and how to save/store it in a SQL relational DB. I've come up with an idea below, but wondered if anyone had any better ways?

A brief summary of the map system used by World of Warcraft:

  • Loading up the map starts with a blank outline of a continent
  • Each continent has multiple 'zones', which are outlined, but blank
  • Selecting a 'zone' zooms into the zone, but it is initially blank
  • As the player explores the zone, certain areas within the zone will 'be discovered' and will be coloured and detailed in
  • Players need to explore the whole zone for it to be fully discovered and show a 'complete' map
  • Players can discover any area of the map in any order
  • Maps and areas are not rigid, they can be complex and different shapes and sizes

My current thinking:

  • Use a 2D tool to create the following 2D assets
  • The blank outline of a zone
  • Multiple transparent layers with a certain area 'coloured', which could be overlayed onto the blank outline
  • Assign an integer ID to each area layer
  • When a player discovers a zone
  • Attempt to find the correct corresponding layer and assigned 'integer'
  • Add this integer to an array corresponding to a zone
  • When a player logs off
  • save this array to a string, seperating the integers with a underscore
  • save this string to a seperate SQL table, using the character ID as a primary key
  • When a player logs on
  • load all rows using the character ID as a lookup
  • Load all of the integers sperating them out with the underscore
  • use the integers as a ID reference to the transparent layers to show as visible

Thoughts?

❌