Table Illustration Table Illustration Table Illustration

The Table Engine

Table Illustration Table Illustration Table Illustration

Table Illustration Table Illustration Table Illustration Demo Table Illustration Table Illustration Table Illustration

Table Illustration Table Illustration Table Illustration Introduction Table Illustration Table Illustration Table Illustration

Dive into The Table Engine! Craft unique structures and entities, import and animate bitmap files, and tweak animation settings with real-time previews. Utilize bitmap segments for dynamic animations, edit gameobject properties in intuitive popups, and auto-populate fields based on selected types. Customize collision logic, generate types and fields from config files, and design maps and levels with preview images and snap grids. Effortlessly switch between level editing and gameplay.

Proudly presented to you by: Arnav Narula, Kenny Li, Jeffrey Lin, and Buwei Chen

Table Illustration Table Illustration Table Illustration Screenshots Table Illustration Table Illustration Table Illustration

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4

Table Illustration Table Illustration Table Illustration Download and Compilation Instructions Table Illustration Table Illustration Table Illustration

Download TheTableEngine.zip

To compile the project

            
              1. Download the project zip file from the link above.
              2. Extract the contents of the zip file.
              3. Open a terminal window at the project root directory.
              4. cd Engine
              5. chmod +x run.sh
              6. ./run.sh
              7. From the GUI, you can load the demo, or create your own game.
            
          

Table Illustration Table Illustration Table Illustration Documentation Table Illustration Table Illustration Table Illustration

Below is an embedded view of the project's documentation. If you prefer to open it in a new tab, click here.

Table Illustration Table Illustration Table Illustration Class Hierarchy Graph Table Illustration Table Illustration Table Illustration

Class Hierarchy Graph

Table Illustration Table Illustration Table Illustration Post Mortem Table Illustration Table Illustration Table Illustration

The final project was both challenging and very rewarding. We spent the first half of the project setting up pybind and developing a test dungeon crawler game, which, looking back, was a great way to ease into the complexities of C++ without diving straight into engine code. We had a lot of fun tinkering with various components, creating several different states for animation, and coding custom camera movement. After learning good C++ coding fundamentals, we decided to code our frontend GUI with Python’s tkinter library. Our goal was to create tiling software, equipped with a grid canvas and sprite map editor, and we ended up accomplishing this goal completely. In terms of difficulty, the frontend GUI was a pain to debug because we underestimated how much effort it would take to fix minute bugs. For example, small nuances like saving data states across different button presses or throwing a warning if multiple game objects had the same name were necessary for a seamless UI experience but ended up taking a lot of time to fix. At the same time, we created a backend pipeline to save GUI data from the tile editor to render game objects in-game. We definitely could have done better preplanning: we ended up modifying our exact structure/approach for converting JSON data many hours into the backend process, but we were able to get past that obstacle once we stepped back to analyze our approach. With more time, we would have loved to implement more features, such as a more robust animation system and adding a variety of weapons and enemies. We would also have liked to add more custom scripting support and more components to be used at the disposal of the user to make the engine more versatile. Overall, our team had really good teamwork, brainstorming ideas at CEID and drawing big-picture concepts and implementations on the whiteboard. If you look past the sleepless hours as we approached presentation day, it was a truly amazing experience. Seeing the GUI work in real-time and making a video presentation to highlight the engine’s strengths made it one of our top 3 projects at Yale!