• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • 🏆 Hive's 6th HD Modeling Contest: Mechanical is now open! Design and model a mechanical creature, mechanized animal, a futuristic robotic being, or anything else your imagination can tinker with! 📅 Submissions close on June 30, 2024. Don't miss this opportunity to let your creativity shine! Enter now and show us your mechanical masterpiece! 🔗 Click here to enter!

Looking for feedback on a new in-browser replay viewer

Status
Not open for further replies.
Level 3
Joined
Dec 16, 2018
Messages
4
Hi friends

Looking for some feedback and suggestions for how to improve a free in-browser website aimed at showing a WC3 replay from a "birds eye view"

The concept was inspired by some other MOBA in-game viewing systems and also built to answer some useful questions about matches without having to open WC3 itself.

Here are some GIFs of the website and what it currently can do:





Gameplay Demo

gameplay-demo.gif

Static "Build Order" Chart

build-order-static-demo.gif


Live Timing "Build Order" chart

build-order-live-demo.gif



---

link to site: WC3Viewer

link to codebase: github link
 
Last edited by a moderator:

Ralle

Owner
Level 77
Joined
Oct 6, 2004
Messages
10,118
Very cool. Good work!

If you want to make a V2, I suggest you look at this project:

He made this (try dragging a w3m or w3x into it):

I believe you could theoretically build a 3D replay player in-browser.

We use it for the model viewer on hive.
 
How accurately do you guys simulate the game? Based on using the viewer Ralle linked above, I've been working on trying to simulate game experiences not based on replays. So in my case, I just take new user inputs and try to play the full game fully. My simulation classes are mostly kept to this folder:

But I don't have the original code, so for example my pathfinding algorithm is not correct and will go different ways than Blizzard's. Since I have not tried to feed replays to my thing, it did not matter. A lot of my stuff is reinvented, not invented to match.

It looks like for example if you guys observe a cast of death coil in the replay, you call a function "doAbilityWithTargetAndObjectId" but it's late and I was just jumping fast through the code trying to follow this as an example of how complex your simulation is.

Is there some part of this that I didn't quite follow that implements damaging living units or healing undead units? I just picked this as a random example as I try to understand how accurate your simulation is and whether it's similar to what I'm trying to do. I don't have death coil in my simulation yet but I do have Holy Light as a sample test case. Here's a link to a timestamp of my code running. I implement some backswing delay and stuff but it's not guaranteed to match the original. I invented my own simulation without concern for replays or exact feature parity, so like I said I'm not sure if it's relevant.
 
Level 3
Joined
Dec 16, 2018
Messages
4
How accurately do you guys simulate the game? Based on using the viewer Ralle linked above, I've been working on trying to simulate game experiences not based on replays. So in my case, I just take new user inputs and try to play the full game fully. My simulation classes are mostly kept to this folder:

But I don't have the original code, so for example my pathfinding algorithm is not correct and will go different ways than Blizzard's. Since I have not tried to feed replays to my thing, it did not matter. A lot of my stuff is reinvented, not invented to match.

It looks like for example if you guys observe a cast of death coil in the replay, you call a function "doAbilityWithTargetAndObjectId" but it's late and I was just jumping fast through the code trying to follow this as an example of how complex your simulation is.

Is there some part of this that I didn't quite follow that implements damaging living units or healing undead units? I just picked this as a random example as I try to understand how accurate your simulation is and whether it's similar to what I'm trying to do. I don't have death coil in my simulation yet but I do have Holy Light as a sample test case. Here's a link to a timestamp of my code running. I implement some backswing delay and stuff but it's not guaranteed to match the original. I invented my own simulation without concern for replays or exact feature parity, so like I said I'm not sure if it's relevant.

I wrote up an overall design post in the github that covers a bunch of things in the approach

The wc3v engine does simulate playback of the game more-or-less but not everything - mostly due to the lack of understanding around the RNG seed for each map which determines item drops.

It "guesses" at most of the important information like starting positions but otherwise it's all event driven and deterministic playback of most of the game.

One big challenge aside from RNG is the huge amount of game data needed to be read in like basic stats up to unit upgrades. While it's technically possible to read all this data and use it you still end up with an incomplete simulation if you don't have the same RNG

Some of the planned features I want to simulate and display in the client but yet to build are:

  • estimated food tracking
  • estimated gold and lumber harvesting (mostly correct - some data lost from combat we don't track accurately)
  • spell casting
  • town portal usage
  • hero revival and alter revivals (already tracked just not displayed)

one last big thing I've attempted to simulate is the creep camp detection. the map does include which neutral units and where they are but the wc3v engine mostly bases who won the camp on timing spent in/out/near the camp with some room for a camp to be contested by both players (drawn in yellow)

the xp levels shown on the tooltips for each creep camp show estimated XP levels based on the real game xp values / algorithm but it doesn't know about XP gained from player vs player combat

i'm hoping i can get most of the way / enough of the way there by estimating combat the same way the client visually estimates dead units - if they don't move they "decay" and eventually disappear. that seems to more or less mimic the reality of a wc3 match for most players (if you aren't moving, selecting, or using it then its most likely dead)

I'll def. have to check out some of the two projects linked, thanks for the replies so far!
 
Status
Not open for further replies.
Top