Skip to content
degenerated1123 edited this page Oct 8, 2017 · 9 revisions

Huge list of everything (Probably Most likely incomplete)

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

Audio

  • Works
    • Decoding of Gothics ADPCM compressed .WAV-files and PCM .WAV files
    • Playback of speech in dialogs and some sound effects like level up sound, and log entry added sound
    • Ambient sounds
    • Animation-triggered sounds
    • Using OpenAL for 2D and 3D sound playback
  • TODO
    • music

UI

  • Works
    • Main menu (mostly)
    • Log-screen
    • Status-screen (basic only)
    • Usage of Gothics original font files (zCFont from ZenLib) + drawing them
    • Advanced Console
    • Dialogue animations
  • TODO
    • Inventory
    • Settings-screen

Ports

  • Works
    • Linux
    • Windows
    • Mac OSX
    • Android
  • TODO
    • bgfx-cmake fails to compile on BSD (clang)
    • 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]
    • Moving to arbitrary positions
  • Todo
    • Rename to CharacterController
    • Implement proper physics
    • 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
    • Fighting system
    • States like death, unconsciousness, burning, etc
    • NPCs not reacting to the player going into their houses
    • Swimming
    • Torches
    • ... 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
ItemController
  • Done.
VisualController
  • Works
    • Displaying of static and animated meshes
    • Setting up static collision for triangle-meshes
    • Particle-Systems
  • TODO
    • Setting up dynamic rigidbody-physics
    • Decals
    • Removing a collision-mesh from the world
CameraController
  • Works
    • Much stuff, but this thing should be completely rewritten.

File formats

.zen (World)
  • Works
    • Opening ASCII- and BinSafe-Files.
    • Reading WorldMesh-data
    • Reading VobTree
      • zCVob
      • oCMOB
      • oCMobInter
      • oCMobContainer
      • Particle-Effects
      • Ambient-Sounds
    • Reading Waynet
  • TODO:
    • Vobs
      • Other types of Mobs
      • Decals
      • Triggers
      • 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 text version of G1
    • Reading binary version of G2
    • Reading animation events
  • TODO
.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)