XertroV / tm-map-together

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Map Together

Multiplayer Map Editor for TM2020.

License: Public Domain

Authors: XertroV

Suggestions/feedback: @XertroV on Openplanet discord

Code/issues: https://github.com/XertroV/tm-map-together

GL HF

0.1.5

  • numerous performance optimizations
  • add server chat (shift+enter hotkey)
  • expose many settings through settings tab in main UI
  • reduce overhead when processing updates (may partially resolve lag/frame issues)
  • add support for limiting players in a room
  • ms support for timestamps
  • add custom titles
  • fix player labels lerping to screen position instead of world position
  • support testing mode in cursor status color
  • smooth cursor anims a bit
  • add stats (under yield) for created and destroyed instances of plugin classes (can be used for debug)
  • flag to avoid using nostadium base patch in case of game crashes when opening editor
  • make max placement time a configurable setting
  • numerous additional settings
  • update support for next server version

E++:

  • fix change of placement mode when freeblocks are deleted (item -> free-ground, for example)

  • many bugfixes

  • lowerable update frequency

  • player tag toggle

  • expose settings prelim

to test:

  • crash with many players for an extended period (ref count > 1 million issue)

  • performance with 16+ players in a room over time (the 'lag' issue with long frames)

  • is the server reliably sending msgs?

  • desync detection + custom blocks/items (no loop, or other issues)

  • calc fast shadows afer placing blocks

todo: recent:

  • [ ]
  • column/pillar fixes
  • warn if map height bad
  • better UI
  • ping messages every 2s or so
  • timeout detection
  • player stats (total placed, deleted, time spent, etc)
  • admin tools (kick / ban)
  • [?] follow mode (control camera)
  • time of day update msgs
  • custom items
  • server update msgs (alerts to active users that server will be going down)
  • undo stack bug
  • fade player labels based on distance from camera vs camera target distance
  • save session for playback
  • change room player limit
  • remove custom item from cursor
  • on-grid free block only
  • auto-duplicate detection
  • compress macroblocks
  • map partitioning idea for testing without interference
  • save mapper metadata in track
  • add app setting for tmx author (autorecord in metadata)
  • colored names
  • add compression to macroblocks (detect place-deletes, delete-places, repeated skin application, etc)
  • add ding on chat msg (or one that mentions your name only maybe)
  • freeblock nudging is BAAAAD
  • fix some item placement on freeblocks
  • fix holding down x and not having things be changed on you

v0.1.6

  • fix undo
  • enable skins -- can be disabled in settings under optional features
  • add one frame delay after leaving test mode
  • dynamic rate-limiting of cursor updates (more ppl -> less often)
  • optimize vehicle pos update packets
  • add admin can always join thing
  • chat log snap to bottom
  • name custom block abusers
  • fix server lockup and disconnect reconnect
  • fix: chat use server timestamp
  • fix: players in list after leaving bug
  • vehicle marker jelly when moving camera

.0.1.5x

  • server chat

  • server: map size, base/mood, car, rules_flags,

  • create map base

  • player join leave announcements (tmx together rip)

  • status hud (processing updates) - pending updates hud

  • disable sweeps

  • server issue limiting to 25 blocks, only triggers more on update

  • limited undo support

  • add room player limit

  • free block del cursor change (items / ghost)

  • settings tab

  • block/prevent undo redo

  • detect test mode and session, only update after

  • add server choice

  • svr: remove players

  • svr: parallel reads / per player

  • follow mode -- update camera to match user

  • room options:

    • allow custom items
    • map base size
    • map mood
    • set car (stadium / rally / snow / desert)
    • block delete all
  • reconnect to server issue on desync (then it rebuilds)

    • avoid rebuild (use autosave with sequence number?)
    • avoid needing to restart map at all (detect desync and reapply actions)
  • grand2020: laggy when building together after a while

  • (this is okay) test driving updates when you leave

  • optimize loading prior map, break into chunks

  • add autosave or saved map pre-upload / download to avoid replaying history

    • requires sequence numbers
  • clear all locked down

  • undo capacity for admin / mods

  • skin sync

  • tm2 map together

does it build entire map

what if 2 ppl load diff maps

  • custom item uploads

  • game crash on reload or joining room

  • sync period where inputs are disabled

  • seq numbers on packets

  • rejoin from X spot

  • separate loop for reading packets

  • demarcate packets with start / end

    • 0x2a2a2a5452415453 (b"START***")
    • len: uint32
    • len: uint32 (repeated for packet framing) & 0xFFFFFF | (ty << 24)
    • check len & 0xFFFFFF are eq, and read type
    • 0x53444e452a2a2a2a (b"****ENDS")
  • SIGNS FUCK EVERYTHING

  • SnowRoadPillarStriaght

  • RallCastleWallStraightPillar

  • send custom items

  • wait for blocks when entering editor mb?

  • cursor and camera of other players

  • deleting macroblock crashed game??

rules for mapping

  • vanilla only (custom blocks / items possible but not supported)

  • no media tracker

  • validation isn't supported

  • leaving test mode might cause updates

  • skins not yet supported

  • no undo / redo

  • placing / deleting blocks will send them to the server, then undo them, then replay things in the right order (so everyone has the same map)

  • no item editor

  • need a feed of all objects placed/deleted

  • can do E++ stuff by using MB to nudge, instead of modifying and refreshing -- that will be compatible with hooks

problems to solve

  • finding blocks in large map:

    • points (not regions)
    • oct tree
    • expand as more blocks placed
    • faster duplicate block checks?
    • export from E++
    • tie into map cache and block/item hooks
  • comparing maps to calculated spec

  • finding differences between calculated and actual

    • use oct tree?
  • undo

    • we have a local stack
    • need to ignore action from our undo queue
      • keep track of index?
      • ignore most recent flag

About

License:The Unlicense


Languages

Language:AngelScript 98.0%Language:Shell 2.0%