To Do

From ManicDigger

Jump to: navigation, search

Contents

War Mod

Bugs

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

Gameplay

  • Falling down damage sometimes doesn't work.
  • 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?

Teams

  • 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.

Map

  • /Load command

Destruction

  • Block health.
  • 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

Weapons

  • Weapon balancing:
    • ?
  • Slowly regenerating power level bar for placing MedicalKit and AmmoPack.

Types

  • Shovel
  • Grenade
    • Explosion should kill other players too.
    • Explosion graphics.
    • Move parameters to BlockType.
    • Keeping grenade for few seconds in hand. Throw only when depressing mouse button.
    • Damage to blocks.
    • Explosion should push players above ground.
  • TNT
  • Rocket - draw flying rocket, range damage, sound, rocket jump, destroying blocks.
  • Stationary machine gun
  • Mortar
  • Binoculars
  • Landmine
  • Poisonous gas
  • Flamethrower
  • Jetpack

Engine

  • Spectators don't hear sounds.
  • Replace weapon textures:
    • Someday replace bitmaps with 3d models
  • Find better walk sound
  • Hearing footsteps of other players - client side.
  • Headblood.png
  • Draw block damage. Multitexturing?
  • Surround all modding events with try catch.
  • Visualization of bullets:
    • Muzzle flash
Network
  • When reconnecting with identified name, disconnect previous player.

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.
Medic
  • 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.
Pyro
  • Speed: 0.8x
  • Health: 100%
  • Armor: 150%
  • Gear:
    • Pistol
    • Flamethrower
    • Grenades
    • Flammable fluid.
Soldier
  • Speed: 1x
  • Health: 100%
  • Armor: 100%
  • Gear:
    • Pistol
    • Grenades
Submachine gun
  • Gear:
    • Submachine gun
Sniper
  • Armor: 60%
  • Gear:
    • Sniper rifle
Shotgun
  • Gear:
    • Shotgun
Machine gun
  • Gear:
    • Heavy machine gun
Armored Infantryman
  • Armor: 150%
  • Gear:
    • Rocket launcher
Chemist
  • 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.
Support
  • Gives ammo.
  • Can call air strikes.
Engineer
  • Jetpack ?
Spy
  • Gear:
    • Silenced guns.
    • Knife
  • Special:
    • Can disguise. Moves silently.

Misc

  • Push player when being hit. Ability to knock off a player from bridge / tower with a gun.
  • Try catch file.create mods\current.txt with "Fortress" if not exists.
  • 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?
  • "Press R to reload" message.

Setup

  • Allow to join servers without logging in (especially war mode servers). Heartbeat parameter.
  • One step installer.
  • Direct download button on the main web page.

Server creation gui

  • Simple: ask for basic server parameters with System.Console.ReadLine when creating new ServerConfig.txt. Server name, game mode, is public, is creative, maximum players.
  • Better: Windows Forms.

Autoupdater

  • 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

More than 256 block textures

Fix TextureAtlasConverter.

Tools

  • Shovel, pickaxe.

Monsters

  • Modding api functions for monsters.

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.

Multiple game modes

  • Game (mode) is a collection of mods.
  • 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

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

  • There is already code for spreading water. Add analogous code for removing water if water source is removed.
  • Fix water drawing in TerrainChunkRenderer.

Items on ground

  • Draw rotating 3d cube representing multiple blocks, already gathered.

Save player position mod

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

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.

Music block

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

Map item

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

Clouds

Maybe use TerrainChunkRenderer?

Rain, Thunderstorms and Snowstorms

Somehow make a png flow from sky, and ogg for thunder.

Boat

Fix water first

Animated blocks

  • Multiple terrain.png files? (1 for each animation frame). <- No.
  • Store animation data in blocks.csv

Area protection

  • Special block that marks 32x32 full columns around as protected?

Cross Platform compatibility

Mono on Windows - hangs after 1 minute

Hangs after 1 minute of play.

  • Try to debug in MonoDevelop

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. System.Windows.Forms.Cursor is handled by wine? Does cursor hide in fullscreen? => no

  • http://www.opentk.com/node/1560 - "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)."

Text on freebsd + nvidia is black

Readable but it's not the colour it's supposed to be. Does old text font work?

Rotate block top face uv for seamless stone texture

Better Renderers\ParticleEffectBlockBreak. Particles billboards

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.

Some lines around selected cube are invisible (inside terrain)

Some lines are invisible (inside terrain).

CharacterRenderer crash on Radeon Mobility X300.

  • on GL.Begin() ?

Cannot move after respawn

After doing a respawn you can build and break blocks, but you can't move.

  • Reason: Player is spawned inside a block.
  • Workaround: Press F3 and F4 and fly away.
  • Solution: Send spawn packet with position where there is an empty block (it should happen currently - why broken?). Maybe just drop player from the sky?

Spawn in lava

  • Randomize spawn position, because if it's always in one place, then players often dig into lava.
  • OR: put spawn point on the antivandal side of the map.
  • AND: allow to get out of lava: bottom layer of the map should be indestructible rock.

Camera

Player stuck when jumping on block.

Lower player height in first person camera.

  • Currently walldistance is added under player?
  • Fixing it causes problems.

Players invisible under water bug.

  • ?, hard to fix.

Better swimming - fix flicker when being on water-air border.

?

Stairs half block - fix building, fix jump and make movement fluid.

It was fixed in diggerstolemybike repository, but that fix broke normal jumping.

Lava color when swimming.

  • 30 minutes

Fpp camera bobbing.

?

Walldistance does not extend into block corners - it applies only when walking into block side.

  • This is the same as leaning on top face of block, which was added in a bad way. - the only real way to fix it is to make physics work with polygon soup. its yogabba

Player stuck when jumping on block - walks in half of block height, attached to block side.

?

Refactoring

  • 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).

Optimization

Optimize game to run on Atom netbook with Intel GMA 950.

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.
  • Use Lidgren library (UDP) instead of TCP.

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.

Network transfer usage

  • Server setting: how big view distance (to send to players)? default 192.
  • Server setting: how often send player positions? default 10Hz.
  • Server setting: limit number of players. No need to make a disconnect packet: just check client-side, on server list.
  • Change Interpolation.cs/NetworkInterpolation.DELAY dynamically, based on client ping, don't always use 0.5 second. For example on LAN it should be near 1.0/FPS. How to compute client ping?

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)

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

  • Recreatable
    • Yes
    • On what framerate (FPS) does this bug happen? I can't reproduce even at 7FPS. Probably happens only with mouses that have high resolution wheels.
  • How
    • 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
  • Solution
    • It may be caused by using deprecated OpenTK mouse wheel function. AFAIR there is a compiler warning about it.

Random Suggestions

  • fix rail sides (make them look like croped not resized) <- slopped rail is higher than 1 block, and can't tile textures.
  • Wiki To Do: other blocks like Hay and TNT need to be added to the Blocks category.
  • Wiki To Do: Some pages like Roof are missing the old/new default textures.
  • Add slope blocks to make MD look more natural.
  • Crop halfblocks' textures instead of resizing.
  • give possibility to make vertical halfblocks to make e.g. thin walls.

Current bugs

  • UpdateBlockTypes() function loads client's default blocks (breaks season changes with custom server textures).
  • Player model textfiles are not being read from server.
  • System.Collections.Generic.KeyNotFoundException on DrawPlayers(..)
  • Sun and moon is visible through players.
  • Player height issues: sometimes it is not possible to build inside a 2 block high tunnel (fortress mode, default player size).
Personal tools