Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

Rewrite #133

@geniiii

Description

@geniiii

It's about time for a rewrite. (in C11)

My work on 3DStris started out as a way to better learn C++ (as I'm sure many can tell). As a result, 3DStris has become an OOP mess with many Java-isms present, despite mixing many C libraries with C++ code.

Some code criticisms:

  • The String class is a C++ wrapper around a C99 library, when I should've probably just written my own library from scratch.
    • We also have both a StringView and String class, because our String class can only own an sds string
  • The GUI (Screen) system was a placeholder waiting for a future replacement, but I never got around to replacing it, as mentioned in GUI rewrite #54.
  • Memory allocation is a mess, and strings are constantly allocated on the heap, just to be freed next frame.
  • Crazy amount of dependencies, many of which are quite unnecessary.
  • CMake sucks.

Changes

  • Cross-platform support (only Win32 and 3DS at first)
    • The main use for the Win32 port will be easier debugging. Debugging on a real 3DS (and especially Citra) is a pain, so I'd like an easier and faster way to debug game logic.
    • Other ports will follow, but mostly as a "side-effect" of engine work
  • Handmade immediate mode GUI
  • Custom save and config format
  • Memory arenas replacing heap whenever possible
    • Might be a pain on the 3DS
  • As little external dependencies as possible, besides metaprogramming libraries like Metadesk

When it comes to code style changes, I'm not too sure. Naming conventions will most definitely change.

This issue will likely receive many edits while I work on other projects, and may not perfectly reflect the final rewrite.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions