~/talk

Heroes of Might and Magic in the Browser: Long, Difficult and Unbearably Interesting

TalkinRussianat HolyJS 2017 · on Monday, 2017-12-11· [creative-coding, web-performance]

A browser-based playable recreation of Heroes of Might and Magic III is implemented by parsing original binary maps with a custom converter, rendering with three layered HTML canvases that draw cached tiles and y-sorted sprites while storing per-object draw functions, and running A* pathfinding on flattened grids optimized with bit shifts and power-of-two sizes. The project targets ~256×256 maps with up to 9,000 objects, includes AI and combat in a working demo, and describes concrete optimizations such as 50% faster tile access and Promise-based microtask sequencing for animations.

AI-written summary · about

  1. 0:00Introduction
  2. 2:20Browser challenge
  3. 3:22Game architecture
  4. 6:10Parsing original maps
  5. 9:02Data tools
  6. 10:28Performance issues
  7. 11:52Texture caching
  8. 13:37Rendering theory
  9. 16:23Render tree optimization
  10. 17:24Animation in JS
  11. 19:51Animation systems
  12. 20:53Data storage
  13. 23:40Array data separation
  14. 26:30Optimizing shifts
  15. 28:57Grid map structure
  16. 30:03Interfaces
  17. 31:50Game logic
  18. 32:54A* pathfinding
  19. 34:02Event handling
  20. 35:50Static vs dynamic
  21. 37:14Mixins
  22. 38:40Debugging
  23. 39:44Skill development
  24. 41:52Resources
  25. 42:51Live demo
  26. 44:18Q&A: Legality
  27. 46:06Q&A: Community
  28. 47:12Q&A: Engines
  29. 48:38Future plans
  30. 49:31Challenge
  31. 50:16Q&A: Testing
  32. 51:50Q&A: Complex games
  33. 53:20Q&A: Workflow
  34. 54:23Q&A: WebAssembly
  35. 56:37Q&A: Porting games
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.