Account Details
SteamID64 76561198011584640
SteamID3 [U:1:51318912]
SteamID32 STEAM_0:0:25659456
Country Malaysia
Signed Up February 25, 2013
Last Posted April 25, 2024 at 6:50 PM
Posts 14 (0 per day)
Game Settings
In-game Sensitivity
Windows Sensitivity
Raw Input  
Refresh Rate
Hardware Peripherals
#43 - stv demo replay in browser in Projects

New Update

Been a while since adding anything, appreciate any thoughts/feedback. :)

Big props to zebulon for keeping the project alive

Player outlines toggle
- Press O to turn on/off
- Is pretty intensive, might kill your PC!

Frame smoothing
- Interpolate between ticks for 0.1x, 0.5x, 1x speeds - which means smoother slow motion!
- May also kill your PC - I am not good at optimizing!

Explore maps
- You can explore the maps by themself by clicking the map name in the About panel.

Killfeed improvements
- Make names clickable (jumps to the player's POV)
- Make killfeed row highlighted if spectated player is involved

posted 4 weeks ago
#36 - stv demo replay in browser in Projects
PootisPootisPootisPootisIf demo contains pauses player doesn't handle them. For example this stops at 62 325 tick (whole demo contains 136 815 ticks). Player doesn't show rest of the match after pause.

Thanks for the detailed info. Looking into this, I believe demo.js does indeed successfully parse/play the entire demo, but the frontend tick # is not actually correct, as the tickrate is scaled down to 30TPS, resulting in the displayed tick values being 1/2 of what they should be.

I just tried removing the downscale, but running at 60TPS totally annihilates performance. I'm not super familiar with the demo.js parser, so I may just display the tick values as tick * 2, but it:

  • still doesn't account for paused ticks (they end up being "padded" to the end of playback)
  • may be slightly off the actual ingame tick (reference comparisons below)


I may just totally remove showing the tick #, and just display a playback time instead? e.g. [03:40 / 19:29]

Otherwise I could just "display" tick * 2 (kinda sus), but it will be inaccurate for demos with pauses.


Used match below to test (as it has a pause & a VOD on Youtube to reference).


Comparisons :

Also seems there are some bugs that occur with certain types of STVs (maybe due to certain plugins?) or maybe pause, that cause PlayerResource data to be missing (so players show up pink/unknown). TBD...

Edit: yo we can't use emojis here?

posted about 3 years ago
#27 - stv demo replay in browser in Projects

Update 25/11/2020

POV switching
Improved how this works; more reliable and better indicators.

- 1 .................. Go to next POV
- Shift + 1 ...... Go to previous POV
- Switching between POV is based on the order in the UI
- Click on the player name in the UI to jump to their POV

Added drawing tools
It's a bit tricky to figure out the best UX/hotkeys for it, so I've added some settings to slightly tailor how you may use it.

- F ...... activate the drawing tools
- Z ...... undo last line
- C ...... clear everything
- You can change activation mode to either Hold / Toggle (not sure which I prefer :P)
- You can enable auto clearing when dismissed (feels better with this on I think)

posted about 3 years ago
#12 - stv demo replay in browser in Projects

Thanks for the compliments everyone!

Seems like textured maps are a big want; main setback are a bunch of broken textures & massive file size (~100mb per textured map vs ~6mb per untextured map). Current implementation has all full-res textures baked into each model file, so it's not the most efficient solution.

Not familiar with Blender so the texture stuff is trial and error right now; and three.js also changes rapidly so things tend to break!

Will probably prioritize this; and any existing bugs/issues people encounter.

twiikuuQuite an impressive piece of work, have to commend the code quality (the Three.js rendering with React components is pretty cool)
As I'd have expected, the valve assets seem to be a big pain point, it's neat that you managed to get something working altogether, is your current pipeline able to extract animations as well?

Yeah the valve assets are pretty painful. I did manage to have player animations load into Blender, but I never tried exporting them to glTF / running them in the viewer - am not planning on implementing animations (think that may be a nightmare

posted about 3 years ago
#1 - stv demo replay in browser in Projects
Demo replay in browser... but less epic

Github | Discord

Project was created because constantly having to reload demos in TF2 to re-watch mids/pushes was super annoying.

This is intended to be more of a tool to analyse/review high-level team play; thus won't be trying to "reproduce" in-game quality visuals/behaviour entirely.

This only works for STV demos! You can try loading POV ones but they will be buggy.

Check it out!


  • Load STV .dem files into demo viewer via browser
  • 3D models of players & maps (glTF)
  • 3 map geometries: wireframe, plain, textured
  • 3 camera modes: POV, spectator camera, RTS camera
  • Timeline/tick scrubbing
  • Change playback rate (0.1x to 3x speed)
  • Drawing tools


  • If you're getting super low frames, try turning hardware acceleration on in your browser.
  • There are a bunch of keyboard shortcuts, there's usually key indicators if you hover over certain buttons
  • There may be occasions where FPS tank (e.g. start of first round) - likely due to 3D models being loaded for the first time
  • Performance quite bad in non-Chromium browsers (e.g. Firefox) - probably due to underlying 3D rendering magics


  • Icewind for his demostf libraries. (huge props!)
  • zebulon for solving map models, textures, skyboxes and grinding map exports
  • lasa01 for io_import_vmf for converting 3D models.
posted about 3 years ago
#245 StatusSpec in Projects

I just started mucking around with StatusSpec, statusspec_localplayer_track_spec_target and statusspec_localplayer_set_current_target are still broken, but this seems to work for me:

// F1-F12 switches to player indexes and enables localplayer (for killfeed)
statusspec_localplayer_enabled 1
statusspec_cameratools_spec_player_alive 0

bind "F1" "statusspec_cameratools_spec_player 2; statusspec_localplayer_player 2"
bind "F2" "statusspec_cameratools_spec_player 3; statusspec_localplayer_player 3"
bind "F3" "statusspec_cameratools_spec_player 4; statusspec_localplayer_player 4"
bind "F4" "statusspec_cameratools_spec_player 5; statusspec_localplayer_player 5"
bind "F5" "statusspec_cameratools_spec_player 6; statusspec_localplayer_player 6"
bind "F6" "statusspec_cameratools_spec_player 7; statusspec_localplayer_player 7"
bind "F7" "statusspec_cameratools_spec_player 8; statusspec_localplayer_player 8"
bind "F8" "statusspec_cameratools_spec_player 9; statusspec_localplayer_player 9"
bind "F9" "statusspec_cameratools_spec_player 10; statusspec_localplayer_player 10"
bind "F10" "statusspec_cameratools_spec_player 11; statusspec_localplayer_player 11"
bind "F11" "statusspec_cameratools_spec_player 12; statusspec_localplayer_player 12"
bind "F12" "statusspec_cameratools_spec_player 13; statusspec_localplayer_player 13"

Not sure if something in a recent update 'fixed' it? But seems like some people had problems with statusspec_cameratools_spec_player?

Anyhow, I'm using this together with the latest version of Lawena and it's working so far.


Attempted to make an alias thingo that emulates how I assume the old command would've worked. I think this probably doesn't work well with the F1-F12 binds because there's no way to 'remember' the index position(?) Anyway, hopefully this works as intended, otherwise let me know.

// Execute view for player 1, not sure if this is necessary
statusspec_cameratools_spec_player 2; statusspec_localplayer_player 2; spec_mode 4;

alias "Player1" "statusspec_cameratools_spec_player 2; statusspec_localplayer_player 2; spec_mode 4; alias NextPlayer Player2; alias PreviousPlayer Player12"
alias "Player2" "statusspec_cameratools_spec_player 3; statusspec_localplayer_player 3; spec_mode 4; alias NextPlayer Player3; alias PreviousPlayer Player1"
alias "Player3" "statusspec_cameratools_spec_player 4; statusspec_localplayer_player 4; spec_mode 4; alias NextPlayer Player4; alias PreviousPlayer Player2"
alias "Player4" "statusspec_cameratools_spec_player 5; statusspec_localplayer_player 5; spec_mode 4; alias NextPlayer Player5; alias PreviousPlayer Player3"
alias "Player5" "statusspec_cameratools_spec_player 6; statusspec_localplayer_player 6; spec_mode 4; alias NextPlayer Player6; alias PreviousPlayer Player4"
alias "Player6" "statusspec_cameratools_spec_player 7; statusspec_localplayer_player 7; spec_mode 4; alias NextPlayer Player7; alias PreviousPlayer Player5"
alias "Player7" "statusspec_cameratools_spec_player 8; statusspec_localplayer_player 8; spec_mode 4; alias NextPlayer Player8; alias PreviousPlayer Player6"
alias "Player8" "statusspec_cameratools_spec_player 9; statusspec_localplayer_player 9; spec_mode 4; alias NextPlayer Player9; alias PreviousPlayer Player7"
alias "Player9" "statusspec_cameratools_spec_player 10; statusspec_localplayer_player 10; spec_mode 4; alias NextPlayer Player10; alias PreviousPlayer Player8"
alias "Player10" "statusspec_cameratools_spec_player 11; statusspec_localplayer_player 11; spec_mode 4; alias NextPlayer Player11; alias PreviousPlayer Player9"
alias "Player11" "statusspec_cameratools_spec_player 12; statusspec_localplayer_player 12; spec_mode 4; alias NextPlayer Player12; alias PreviousPlayer Player10"
alias "Player12" "statusspec_cameratools_spec_player 13; statusspec_localplayer_player 13; spec_mode 4; alias NextPlayer Player1; alias PreviousPlayer Player11"

alias "NextPlayer" "Player2"
alias "PreviousPlayer" "Player12"

bind "mouse1" "NextPlayer"
bind "mouse2" "PreviousPlayer"

Edit 2:
Seems like it works perfectly well with some STVs, whereas others a few of the players don't have indexes assigned to them so the camera doesn't go to them during the cycle. Most likely just demo shit being broken from some recent updates.

posted about 8 years ago
#1100 Show your HUD modifications! in Customization
Filosovdl link?

I'll add one to the earlier post. Just so you know, this is just me mucking around trying stuff, not really intending to make a full blown HUD.

Also did a splatter for the round time.

posted about 10 years ago
#1098 Show your HUD modifications! in Customization

Was mucking around today with using vtfs, trying things out. Don't really know what I'm doing!

(They're meant to be paint splattery thingies)

Download link

Note: Everything is still very messy, a lot of bad alignment/colours/fonts etc. Added some opacity to the splatters. The HUD is also kinda broken in various places.
It looks really bad if your texture quality is set to low, by the way.
Uploading in case you want to see/use the splatter vtfs. Please back up your stuff though!

Also, it's a modified 5MD yAhud (the best HUD!)

posted about 10 years ago
#20 Paradise Circus by grid in TF2 General Discussion

nailed the balance between editing and pace etc. such that you know what's going on.

some videos feel overdone that it's hard to follow the frags, but this was just perfect!

posted about 10 years ago
#10 Another ghos7 auction-strange orginal. in TF2 General Discussion

This game is killing me.


posted about 10 years ago
#7 Another ghos7 auction-strange orginal. in TF2 General Discussion

Two can play at this game!


posted about 10 years ago
#5 Another ghos7 auction-strange orginal. in TF2 General Discussion


posted about 10 years ago
#156 Auction - Signed Stranges in TF2 General Discussion

Donated under smeso for mesr bow, gggly scatter, TLR launcher & STAR gardener.
In no particular rush so don't fret about it; just posting here to make sure is all.

Cheers Whisker!

posted about 11 years ago
#27 Help Get Chess Club To LAN! in TF2 General Discussion

$30 donated.

Good luck!

posted about 11 years ago