To Do

From ManicDigger

(Redirected from Todo)
Jump to: navigation, search



Last updated 2014-02-13

Known Bugs

  • Falling down damage sometimes doesn't work. (When player hits edge of a block)
  • Some lines around selected cube are invisible (inside terrain)
Some lines are invisible (inside terrain).
  • Stairs half block - fix building, fix jump and make movement fluid (fixed in diggerstolemybike repository, but that fix broke normal jumping)
  • m.UpdateBlockTypes() function loads Client's default blocks (breaks season changes with custom server textures)
  • Player model textfiles are not being read from server always (only when forced to be loaded directly after joining)
  • System.Collections.Generic.KeyNotFoundException on DrawPlayers(..)
  • It's possible to glitch trough walls by walking into the side of a block

Used mouse wheel to switch block type and it got stuck looping through them all very quickly

  • Seems to occur when wheel is turned more than 1 tic per frame
  • Workaround
    • Rotating the wheel the other way at a high speed stops it and once more will have it looping the otherway
  • Notes
    • Clicking the mouse wheel on a block type would select said block but was still stuck in the loop.
    • Pressed ESC. Continued to loop even with menu open
    • Rotating wheel 1 way would slow it down the other couldn't tell if it sped it up or not. still in the loop...
    • Seems to move at about 1 selection a frame
    • Seemed to slightly slow down my frame rate
  • Possible Solution ?
    • It may be caused by using deprecated OpenTK mouse wheel function. AFAIR there is a compiler warning about it.

Suggested Features

  • Block health.
  • Hearing footsteps of other players - client side.
  • Draw block damage. Multitexturing?
  • Surround all modding events with try catch.
  • Server creation GUI
  • Tools (Shovel, Pickaxe, etc...)
  • Monsters (including Modding API functions)
  • Draw rotating 3D items on ground when dropped
  • Animated blocks
  • Animated skysphere
  • Clouds
  • Weather effects (rain, snow)
  • Particles (block hit/break, accessible for Mods)
  • Bottom layer of the map should be indestructible rock to prevent getting stuck at bottom


  • One step installer.
  • Direct download button on the main web page.

More suggestions

  • Fix rail sides (crop, not resize) <- slopped rail is higher than 1 block, and can't tile textures.
  • Add slope blocks to make MD look more natural.
  • Crop halfblock textures instead of resizing.
  • Possibility to place vertical halfblocks to make e.g. thin walls.


  • Lower player height in first person camera
  • Players invisible under water bug (?, hard to fix)
  • Fix flicker when being on water-air border

Infinite map height

  • There are multiple Chunk[,,] arrays. In 2d it's just (8192/16 * 8192/16 * 128/16)=512*512*8 32bit pointers=8 megabytes. But in 3d it's too much (512 megabytes).
  • Need better data structure. Maybe replace with Dictionary (10x slower than array), or use big chunks (4x4x4 chunk containers with normal chunks or just null for most of the map - 64x saving)
    • bool[, ,] DirtyChunks.small
    • int[, ,][] TerrainRenderer.batchedchunks
    • Chunk[, ,] ServerMap.chunks
    • Chunk[, ,] InfiniteMap.chunks
  • Shadows don't work on infinite height.
    • Shadows need to be rewritten anyway. They should just apply to 1-2 chunks down.


  • Fix water first


  • Signing nightly versions with private key.
  • What to do with files that are removed in next version?
  • What to do with files changed by players (texture packs, mods)?
  • Find a ready solution.

New inventory

  • Armor, helmet, gloves, boots - OnItemWear()
  • Refactoring: remove code for items bigger than 1x1

Better TerrainRenderer

  • Revert to behavior of 2011-07-14.
    • Server should send chunks in <= distance, not full 256x256x128 area.
    • Instead of Remap() always add and delete chunks one by one. DirtyChunks class.
    • Fix current area remap on fog 32.

Client RAM usage

  • Use a finite map and if player walks too far from center, stop game and remap all chunks in ITerrainRenderer and IMapStorage.
  • This way client RAM usage can be easily kept constant, there are no memory leaks.
  • With exception of Remap() times, world is finite on client.

Multiple game modes

  • Allow to share mods between games without duplicating files.

Modding API functions

  • Class GameDataMonsters as a separate mod instead of part of GameData.cs in source

Possible Mods

Crafting table mod

  • Requires dialog API functions.

Farming mod

  • Crops grow faster when near water
  • Crops grow faster on dirtforfarming
  • Some plants should grow only in a certain season
  • Cows place fertilizer block randomly. it turns nearest 3x3 DirtForFarming into DirtForFarmingFertilized
  • Shovel rightclick turns dirt into dirtforfarming.
  • Crops can only be gathered with scythe.
  • Crops0 have to be found in wild

Flowing water mod

  • See Fluids.cs Mod. Needs performance improvements.
  • There is already code for spreading water. Add analogous code for removing water if water source is removed.
  • Fix water drawing in TerrainChunkRenderer.

Save player position mod

  • When rejoining server, player should be spawned at the place where he left.

Music block

  • Store web address of .ogg file inside and play it on client.
  • Requires .ogg streaming (not just play(byte[])).

Map item

  • Fog of war
  • Store explored area in item metadata.

Cross Platform compatibility

Mono on Linux - fps spikes

  • Every 1 second.
  • Texture upload is slow. FPS counter (F7 key) is updated every 1 second, so it causes lag
  • Workaround: Don't use FPS counter.

Mono on Linux - no sound

  • Sound doesn't work.
  • FIX: Use a version compiled on linux
  • Fixed on Ubuntu, but the fix probably did break on other distributions.

Linux and FreeBSD - mouse cursor is visible

  • Mouse cursor doesn't hide.
  • - "Currently, the only way to do this is to set System.Windows.Forms.Cursor.Current to an empty cursor (Cursor.Hide() is not supported on Mono)."

More stuff


  • Refactoring: Extract BlockRenderer classes from TerrainChunkRenderer?
  • Refactoring: Extract one main cube vertices/indices list. Remove duplicate lists.
  • Refactoring: Extract guistate classes.
  • Refactoring: Remove all dead code (commented out code too).

GPU: Backface culling - one display list for each block side in chunk

  • MeshBatcher: Add BlockSide direction to Add(). Check direction in Draw().
  • TerrainRenderer: ?
  • TerrainChunkRenderer: ?

Server responsiveness

  • Make sure Server.Process() never takes more than a few miliseconds.

RAM usage

  • Server: Document exactly which chunks are loaded for each player.
  • Client: Keep in memory only those chunks that are within view range. Swap chunks that are away to disk database (same as server does).
  • Client, Server: Do not store empty chunks in memory. (1/2 of map - all chunks above ground).
  • Client: When storing shadows level (0-15), pack two blocks into one byte.

Select texture filtering

  • Select texture filtering (disable mipmaps), inside game. Many people see wrong textures with white lines on block edges. (60 minutes when just changing current ingame options menu)

War Mod


  • Sometimes player isn't respawned when switching team. Does this bug still happen? Yes.


  • Player position (standing, crouching, lying). How to draw model?
  • Ability to shoot through blocks with draw type "transparent" (Leaves, Fences, Windows etc.).
  • Team members all spawn one upon the other (same spawn point). Maybe vary spawn point between team a bit so they spawn side by side and not in each other.
  • Gunshot detection both clientside and serverside. Rewind time serverside.
  • Player dies too when teamkilling a player.
  • Spawn protection?


  • Create (MD) groups inside mod instead of rigid color team.
    • Non-rigid blue and green team.
    • Allows to define any parties e.g. Cowboys vs. Bandits, Axis vs. Allied, Zombies vs. Humans or whatever..
  • Spectator:
    • Dead players can follow players until respawn.


  • /load command
  • Destruction
    • Break down of buildings when connection to ground is being cut.
    • Similar to AoS.
    • Blocks fall down to ground like sand / gravel.

Game Modes

  • Bomb
  • Team Deathmatch
  • Deathmatch
  • Capture the flag
  • One flag CTF
  • Last Man Standing


  • Weapon balancing
  • Slowly regenerating power level bar for placing MedicalKit and AmmoPack.
  • Weapon Types:
    • Shovel
    • Grenade
      • Explosion should kill other players too.
      • Move parameters to BlockType.
      • Keeping grenade for few seconds in hand. Throw only when depressing mouse button.
      • Damage to blocks.
    • TNT
    • Rocket - draw flying rocket, range damage, sound, rocket jump, destroying blocks.
    • Stationary machine gun
    • Mortar
    • Binoculars
    • Landmine
    • Poisonous gas
    • Flamethrower
    • Jetpack


  • Replace weapon textures:
    • Someday replace bitmaps with 3d models
  • Headblood.png
  • Visualization of bullets:
    • Muzzle flash

Suggestion / Ideas

Any additional ideas and suggestions from community.

Player classes

Scout =====

  • Speed: 1.5x
  • Health: 90%
  • Armor: 50%
  • Gear:
    • Pistol
    • Rifle
    • Smoke grenade (?)
  • Special:
    • Good for stealing flag at CTF mode due to fast movement capabilities.
  • Speed: 1x
  • Health: 130%
  • Armor: 80%
  • Gear:
    • Pistol
    • Shotgun
    • Grenade
    • Medic Kit
    • Revive syringe / defibrillator
  • Special:
    • Can revive dead players (while they wait for respwan).
    • Can distribute medic kits and heal injured players.
  • Speed: 0.8x
  • Health: 100%
  • Armor: 150%
  • Gear:
    • Pistol
    • Flamethrower
    • Grenades
    • Flammable fluid.
  • Speed: 1x
  • Health: 100%
  • Armor: 100%
  • Gear:
    • Pistol
    • Grenades
Submachine gun
  • Gear:
    • Submachine gun
  • Armor: 60%
  • Gear:
    • Sniper rifle
  • Gear:
    • Shotgun
Machine gun
  • Gear:
    • Heavy machine gun
Armored Infantryman
  • Armor: 150%
  • Gear:
    • Rocket launcher
  • Speed: 1x
  • Health: 100%
  • Armor: 100%
  • Gear:
    • Pistol
    • Shotgun
    • Poisonous gas / chemical weapons
    • Gas mask
  • Special:
    • Poison gas attacks
Demolition Man
  • Speed: ?
  • Health: ?
  • Armor: ?
  • Gear:
    • TNT (time fuse, remote-controlled)
    • Land mines
    • ..
  • Special:
    • Has heavy explosives.
    • Can defuse explosives.
    • Good for tactics e.g. can blow up bridges / positions.
  • Gives ammo.
  • Can call air strikes.
  • Jetpack ?
  • Gear:
    • Silenced guns.
    • Knife
  • Special:
    • Can disguise. Moves silently.


  • Draw impact sprite when bullet hits a block (analogous to player hit blood).
    • Vary impact sprites between block types (draw other sprite on hitting water and glass).
    • Alternative to cracks?
Personal tools