Skip to content

Latest commit

 

History

History
203 lines (154 loc) · 5.67 KB

TODO.md

File metadata and controls

203 lines (154 loc) · 5.67 KB

To Do

  1. Add a preliminary master server advertising implementation

  2. Fix bugs:

  • Sometimes the server doesn't call G_WorldDone when gameaction is set to ga_worlddone; something sets it back to ga_nothing first.
    • It looks this might also set GS_FINALE
    • And also it prevents the server from sending a gameaction update and NM_FULLSTATE to clients
  • Windows crashes pretty early on
  • Currently nothing clears or renders when you switch to vidingl from OpenGL
    • Also I think OpenGL mode doesn't refresh properly (console sticks)
  1. Add a server message sound (just use radio/tink?)

  2. Get rid of 'widget'

  • Basic UI elements become 'box'
  • HUD elements become 'element'
  1. UI scaling
  • Make UI scaling optional
  • Wrapping doesn't wrap unbroken lines
    • May be nothing I can do about this

:::: Proto Release Here ::::

  1. Move cheats to scripting
  • ...so they work
  • Need a lot of binding support
  1. UI Enhancements
  • I think padding should be proportional to the widget's size instead of the parent widget's size
  1. UI Bugs
  • FPS sinks when console scrollback fills up
  1. Messaging
  • Specifically don't bug the console on bad markup; test it first
  • P_Printf doesn't work in server mode
  1. Test ECI again

  2. Lift artificial limit on players

  • bitmaps, basically
  1. Add spectators
  • This is essentially reworking the logic between playeringame, players, and walkcamera/spycam
  • Move all the SV_* calls to netpeer_t instead of playernum; eventually these will apply to peers that are just spectators
  • Probably also take this opportunity to remove server-as-player hack
    • Use a camera in non-headless mode (add non-headless mode???)
  1. Remove 4 player restriction

:::: Alpha Release Here ::::

  1. Move configuration into scripting
  • Refactor screens
    • From what I can tell:
      • screens[0] is the foreground for HUD, status bar, finale, and menu
      • screens[1] is kept blank to erase screens[0] ...although it looks like everything in r_draw.c uses it...
      • screens[2] and screens[3] are used for the screen wipe (src and dst respectively)
      • screens[4] is the STBAR background
    • V_CopyRect
    • V_FillFlat
    • V_FillPatch
    • V_DrawBackground
    • V_DrawMemPatch
    • V_DrawNumPatch
    • V_DrawLine
      • Uses screen[0] always, via PUTDOT -> V_PlotPixel(0, ...)
    • V_FillRect
    • V_PlotPixel
  1. Add maplist
  • Add map command
  1. Add RCON
  • Need a way to intercept console I/O
  1. Build master server
  • Create a server description specification in JSON
  1. Add WAD downloading
  • cURL
  • the client should do this between frames in case it needs to download a huge file (or a file from a slow server); libcurl ought to make this pretty easy

:::: Beta Release Here ::::

  1. Add 3D physics

  2. Add ZDoom physics

  • Including ZDoom SSG spread
  1. Add SNDCURVE lump support

  2. Improve PWO

  • Probably this is just gonna be a script
    • How to not send an arbitrary script to the server though...?
    • Does it make sense to have scripting contexts per-client serverside?
    • How to configure a script, since it can't be in d2k_config.lua?
    • There should maybe be a local_config.lua file that runs after config processing takes place, to modify and augment the loaded config
  1. C/S Demos
  • serverside
  • clientside
  1. Add announcer

:::: Version 1 - DEATHMATCH Capable :::

  1. Add slopes

  2. Add teams

  3. Add Hexen map support

  4. Add scripted game modes

:: Suitable For Competition Here ::

Smaller Issues

  1. Add error codes to n_proto

  2. Servers shouldn't quit, they should shutdown; also prevents accidentally running /quit in the console instead of :quit and closing the server....

  3. Add auto-scroll to TextWidget

  4. Update/Mirror dependencies somewhere

  • It would be really cool to use the pacman/pkgbuild system and mirror source also
  1. Manually delta compress commands (serverside and clientside)
  • bitmap:
    • index changed = 1
    • tic changed = 2
    • server_tic changed = 4
    • forward changed = 8
    • side changed = 16
    • angle changed = 32
    • buttons changed = 64
  • then deltas:
    • All diffs are char except for angle, which is a short
    • Effectively limits lag to 255 commands, which is way more than enough

Hypothetically: { 4096, 4012, 4008, 50, 50, 180, 1 } // 17 bytes { 4097, 4013, 4008, 50, 50, 180, 1 } // 17 bytes // Total: 34

Becomes: { 4096, 4012, 4008, 50, 50, 180, 1 } // 17 bytes { 3, 1, 1} // 3 bytes // Total: 20, saved: 14

  1. Implement actor vectors
  • Send movement start TIC
  • x/y/z represent the start position at time of last velocity change
  • More amenable to delta compression
  • Easier to nudge projectiles
  1. Add projectile nudging
  • Projectiles are currently predicted, thus they usually appear ahead of where they normally would
  • Projectile nudging would spawn the projectile normally (i.e., right in front of the firing player) with a higher-than-normal velocity, and then adjust the velocity downwards based on the client's lag and a preselected function (curve)

Future/Possible

  1. Remove software renderer
  • See about implementing Doom lighting and 8-bit color using shaders

Features

  1. UDMF
  2. ZIP/PK3 resource files
  3. Bots
  4. ACS Scripting
  5. DECORATE
  6. EDF
  7. ExtraData
  8. MAPINFO
  9. 3D floors
  10. 3D MixTex
  11. Portals
  12. Polyobjects
  13. Ambient Sounds
  14. Support for other ID Tech 1 games (Heretic, Hexen, etc.)