o
odinpkg.dev
packages / app / laiteur

laiteur

23c170capp

game engine written in odin & opengl

No license · updated 2 months ago

laiteur

engine written in odin using opengl, glfw, ufbx, imgui, tracy

name is lait + moteur (milk + engine) -> laiteur (like later)

todo

  • game ui
    • text
      • port the text rendering code
      • batched rendering
    • graphics
      • transparency
      • graphic effects
        • ambient occlusion
          • gbuffer for pos & normal
            • works without msaa
            • works with msaa (outputs the same image in all buffers)
          • ssao
        • shadows
        • bloom
        • subsurface scattering
      • special stuff
        • current player-char outline
        • water shader
        • leaves / bushes / vegetation
        • vertex color material blending
    • core
      • custom asset formats
        • texture
        • mesh
        • spir-v shaders
      • batched / instanced rendering
      • particle system
      • proper asset streaming / loading
      • serialization
      • different hdri for reflections and bg
      • make scene save in save_sys.odin
        • write to file
        • load from file
        • redo with entity_templates in mind
      • make parent child relations
      • add sound using raylib audio
    • editor
      • get gizmos working again
        • get them rendering properly
      • get undo & redo working again
    • upkeep & organisation
      • hot-reloading
      • factor out code into packages ???
        • assetm
        • data ?
        • util
      • figure out how to exclude external/ from telescope findings
      • get laiteur to compile on linux
    • optimization
      • pass data using context or as proc args to avoid cache misses
      • make game_a_star_pathfind() use temp_allocator
      • find all allocations and check if context.temp_allocator could be used instead
      • bindless textures ones i have vulkan renderer
      • game_update takes way too long, use tracy to see
      • make debug_draw_path/curve() also be abled to use gl.LINE_STRIP

buggs

  • booted up blank screen and infinite loop or some on laptop [23.12.24|00:50]

  • after sleep deprivation

    • laptop no longer 160-220 fps now 15-30 fps, PS: dafuck did i do ???
      • added text_draw_string() which is unbatched
      • add batched text draw call proc
    • screen output buffer wrong size on startup -> prob. gl.Viewport()
  • -sanitize:address buggy on laptop, f.e. in input.odin:input_key_callback() C:/Workspace/odin/03_games/xcom/src/input.odin(239:20) Index 4294967296 is out of range 0..<350 ================================================================= ==15112==ERROR: AddressSanitizer: array-bounds-exceeded on unknown address 0x7ffb95deb699 (pc 0x7ffb95de b699 bp 0x125b1f237780 sp 0x0054df4fc320 T0) ==15112==*** WARNING: Failed to initialize DbgHelp! *** ==15112==*** Most likely this means that the app is already *** ==15112==*** using DbgHelp, possibly with incompatible flags. *** ==15112==*** Due to technical reasons, symbolization might crash *** ==15112==*** or produce wrong results. *** #0 0x7ffb95deb698 in RaiseException+0x68 (C:\WINDOWS\System32\KERNELBASE.dll+0x18003b698) #1 0x7ff660fe2aca in runtime.windows_trap_array_bounds-662 C:#terminal_extensions\odin\base\runtime \procs_windows_amd64.odin:16 #2 0x7ff660fe1bda in runtime.bounds_trap C:#terminal_extensions\odin\base\runtime\error_checks.odin :6 #3 0x7ff660ff13ab in runtime.bounds_check_error.handle_error-0 C:#terminal_extensions\odin\base\run time\error_checks.odin:39 #4 0x7ff660fe2bea in runtime.bounds_check_error C:#terminal_extensions\odin\base\runtime\error_chec ks.odin:41 #5 0x7ff6610472df in core.input_key_callback C:\Workspace\odin\03_games\xcom\src\input.odin:239
    #6 0x7ff661175da0 in ImGui_ImplGlfw_KeyCallback+0xa0 (C:\Workspace\odin\03_games\xcom\bin\game.exe+0 x1401c5da0) #7 0x7ff661156af5 in glfwGetWin32Window+0xc35 (C:\Workspace\odin\03_games\xcom\bin\game.exe+0x1401a6 af5) #8 0x7ffb9725ef5b in CallWindowProcW+0x60b (C:\WINDOWS\System32\USER32.dll+0x18000ef5b) #9 0x7ffb9725e9dd in CallWindowProcW+0x8d (C:\WINDOWS\System32\USER32.dll+0x18000e9dd) #10 0x7ffb5b75f1ef in glPushClientAttrib+0x1508f (C:\WINDOWS\SYSTEM32\opengl32.dll+0x18003f1ef)
    #11 0x7ffb9725ef5b in CallWindowProcW+0x60b (C:\WINDOWS\System32\USER32.dll+0x18000ef5b) #12 0x7ffb9725e9dd in CallWindowProcW+0x8d (C:\WINDOWS\System32\USER32.dll+0x18000e9dd) #13 0x7ff661175989 in ImGui_UpdatePlatformWindows+0x1b59 (C:\Workspace\odin\03_games\xcom\bin\game.e xe+0x1401c5989) #14 0x7ffb9725ef5b in CallWindowProcW+0x60b (C:\WINDOWS\System32\USER32.dll+0x18000ef5b) #15 0x7ffb9725e683 in DispatchMessageW+0x4a3 (C:\WINDOWS\System32\USER32.dll+0x18000e683) #16 0x7ff661153c27 in glfwPollEventsWin32+0x77 (C:\Workspace\odin\03_games\xcom\bin\game.exe+0x1401a 3c27) #17 0x7ff66104b00b in core.main C:\Workspace\odin\03_games\xcom\src\main.odin:451 #18 0x7ff660fe376e in main C:#terminal_extensions\odin\base\runtime\entry_windows.odin:46 #19 0x7ff6612a6cd3 in __scrt_common_main_seh D:\a01_work\26\s\src\vctools\crt\vcstartup\src\startup \exe_common.inl:288 #20 0x7ffb96b07373 in BaseThreadInitThunk+0x13 (C:\WINDOWS\System32\KERNEL32.DLL+0x180017373)
    #21 0x7ffb9875cc90 in RtlUserThreadStart+0x20 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x18004cc90)

    AddressSanitizer can not provide additional info.
    SUMMARY: AddressSanitizer: array-bounds-exceeded (C:\WINDOWS\System32\KERNELBASE.dll+0x18003b698) in Rai
    seException+0x68
    ==15112==ABORTING 
    

naming-conventions

  • variables: snake_case
    • bools: has_XXX, is_XXX
    • ...
  • functions: snake_case
  • structs: snake_case_t
  • constants: SCREAM_CASE
  • enums: Camel_Snake_Case.SCREAM_CASE (XXX_Type, XXX_Flag)