Skip to content
degenerated1123 edited this page Dec 7, 2016 · 9 revisions

Current Project status

Huge list of everything

Daedalus-VM (Scripting)

Code execution
  • Working
    • Interpreting all of the daedalus-instructions
    • Calling functions, stack, etc
    • Calling externals
    • Initializing instances
  • TODO:
    • Classes are described in Daedalus::registerGothicEngineClasses, which can be done automatically. The Daedalus-Symbols of the classes are actually in order, so we can just map everything using that, instead of making use of an evil makro.
    • Symbols have unused variables and are very heavy, which could be improved
    • Externals.cpp is currently containing everything and should be split up.
    • Creating an NPC is pretty messy, as there are externals defined inside some classes in the Daedalus-namespace, triggering callbacks to REGoth-code, pre- and post-versions... That can be improved.
    • Monster AI

World loading

.zen
  • Works
    • Extracting the world-mesh
    • Putting vobs
    • Initializing the world using script-functions (inserting items/npcs)
  • TODO
    • Not all vobs implemented (particle-systems, decals)
    • Loader is crammed into the WorldInstance-class, which can be improved greatly.
    • Preprocessing of the worldmesh and collisionmesh takes ages. Can be cached or speed up.
    • Could be loaded in parallel
    • Some kind of progress indicator during loading would be nice
    • Loading and managing of Freepoints
    • Extracting the BSP-Tree and using it for culling and sections (NPC-houses)
.json (Savegame)
  • Works
    • All vob-types supported by the .zen-loader, except mobs!
    • Inserting NPCs/Items from json-file instead of startup-script
    • Export/Import of all major controllers
  • TODO
    • Read mobs (Some work is done for that already!)
    • Compress on the fly, maybe do some simple encryption
    • Loader is crammed into WorldInstance as well, which can be improved.

Input

  • Works
    • Binding (multiple) keys to actions
    • Mouse input
  • TODO
    • Android-Input is pretty bare

Video

  • Works
    • Drawing of World-Mesh, Static-meshes, Animated models
    • Fog
    • Day/Night coloring
  • TODO
    • WorldRender.cpp doesn't look very good. Rendering-system should be reworked at some point.
    • Compile the shaders for D3D11/12 on windows
    • Put shader sources into the repository

Audio

  • Works
    • Decoding of Gothics ADPCM compressed .WAV-files
    • Playback using SFML
  • TODO
    • SFML is too large. Replace with OpenAL or something similar.
    • Glitch at the end of decoded ADPCM wavs

UI

  • Works
    • Basic tree-structure for UI
    • Debug-drawing of dialogs using Imgui
    • Displaying dialog-options using Imgui
    • Displaying dialog-lines using Imgui
  • TODO
    • Basically everything
    • Usage of Gothics original font files (zCFont from ZenLib) + drawing them
    • Console
    • Dialogs are still pretty rough. No animations, dialog-selection pops up between sentences.
    • Inventory, menus, ...

Ports

  • Works
    • Linux
    • Windows
    • Mac OSX
    • Android
  • TODO
    • bgfx-cmake fails to compile on BSD (clang)
    • Audio not implemented on android
    • N64-port

Game Objects

PlayerController
  • Works
    • Basic collision-detection
    • Script-State tracking
    • Equipping all kinds of items
    • Using Mobs (still early version)
    • [More, but I'm tired right now]
  • Todo
    • Rename to CharacterController
    • Remove old routine system
    • Implement proper physics
    • Implement proper pathfinding (Currently only following the waynet)
    • NPCs take other paths than in the original (Baal Parvez runs through the forest from the old camp (I think!))
    • Many Event-Messages are not implemented yet
    • Player movement should be done using messages as well
    • Some monsters not playing idle-animation
    • Fighting system
    • States like death, unconsciousness, burning, etc
    • Proper inventory (UI)
    • NPCs not reacting to the player going into their houses
    • Proper animation-library (For all kinds of weapons, etc)
    • Swimming
    • Torches
    • Animation when picking up items
    • ... Probably way more ...

MobController

  • Works
    • MobCore-system describing the different types of mobs without needing a new controller every time
    • Playing animations on both Mob and interacting player
    • Finding all positions we can interact from
    • Tracking of the current state the mob is in
  • TODO
    • Find out what the max-state is and block it there
    • Complicated mobs like alchemy-tables, beds, doors are not implemented yet
    • CLosing-animations on chests should be reversed, but the reverse-flag is not yet read from the MDS-file.
ItemController
  • Works
    • Done.

File formats

.zen (World)
  • Works
    • Opening ASCII- and BinSafe-Files.
    • Reading WorldMesh-data
    • Reading VobTree
      • zCVob
      • oCMOB
      • oCMobInter
      • oCMobContainer
    • Reading Waynet
  • TODO:
    • Vobs
      • Particle-Effects
      • Other types of Mobs
      • Decals
      • Triggers
      • Ambient-Sounds
      • Movers
      • more?
.TEX (Textures)
  • Done
.MSH (zCMesh)
  • TODO
    • Remove internal data copy
.MDM, MDH, MDL (zCMeshLib, zCMeshSoftSkin)
  • TODO
    • Remove internal data copy
.MDS (zCModelPrototype)
  • Works
    • Reading some of the contents of the text-version in Gothic 1
  • TODO
    • Most features. Parser is pretty bare as well.
    • Binary files used by G2 (G1 uses text) not supported at all
    • Reading of animation-events
.MAN (zCModelAni)
  • TODO
    • Remove internal data copy
zCMaterial
  • Done
.FNT (zCFont)
  • Wrote some code, but never tested it. Should be working, I guess.
  • TODO
    • Remove internal data copy
OU.bin/dat (zCCSLib)
  • Everything needed by the game works. Format is very verbose.
.DAT (DATFile)
  • TODO
    • Use a union in the opcodes to make them smaller! (PARStackOpCode)
Clone this wiki locally