📜 Arcane Dynamics - A 2D Projectile Kinematics Solver
Tracks: Most On Theme
Inspiration 💡
The vision was to create a high-performance C++ physics Engine with a unique Arcane Dynamics fantasy aesthetic, transforming dry kinematics into an engaging, interactive experience. This project helps kids learn the simple art of 2D projectile kinematics.
What it Does 🎯
Arcane Dynamics is a real-time 2D kinematics calculator and visualization tool. It allows users to input any known set of projectile variables (like initial velocity, height, or angle θ), instantly calculates the full trajectory and kinematic data, and displays the results across two synchronized plots:
- Projectile Path Plot: Position vs. Distance
- Velocity Plot: Velocity vs. Time
This provides instant, accurate feedback for solving and understanding complex 2D motion problems.
Along with a visual representation of the projectile, depicted as a mage shooting fire.
How We Built It 🛠️
We utilized a high-performance C++ stack for the application:
- GUI and Plots: We used Dear ImGui and ImPlot to create a fast, interactive GUI, utilizing GLFW and OpenGL.
Challenges We Ran Into 🤯
- Linker Errors (ARM64): We struggled with "Undefined symbols" errors when integrating ImPlot on Apple Silicon (arm64). This was resolved by managing ImPlot as a Git Submodule and explicitly adding its source files (
implot.cpp,implot_items.cpp) to the final executable target inCMakeLists.txt. - Git Merge Conflicts: We encountered issues merging branches into the main branch but navigated them with patience and teamwork.
Accomplishments That We're Proud Of ⭐
- Seamless Integration: Successfully combined complex physics calculations with a custom-themed, immediate-mode GUI that maintains excellent performance. Especially notable in C++, where GUI programming is notoriously tricky. This makes our work highly efficient and portable across devices.
- Unique Aesthetic: Developed and implemented the cohesive Arcane Dynamics fantasy style, including custom fonts and smooth color transitions (ivy green → brown on hover) for controls.
- Clean Architecture: Established a robust and maintainable build process using CMake and Git Submodules, ensuring the project is easily compiled and shared.
- Single Executable File: Simplifies usage for all users, even those with minimal technical knowledge.
What We Learned 🎓
We gained deep knowledge in:
- Immediate-Mode GUI Programming: Understanding the importance of state management (e.g., using
static bool g_ShowPlots) and rendering the UI every frame. - C++ Template Linkage: Learning how template instantiation and linking work with external libraries like ImPlot, requiring direct inclusion of its source files.
- Practical GUI Styling: Leveraging
ImGui::PushFontand comprehensive style structures to redefine the entire application's visual identity with a single function call.
What's Next for Arcane Dynamics 🔮
- Challenges Gamemode: Predefined problems that users can solve, encouraging prestige among those who succeed.
- Interactive Elements: Implement mouse interactions, such as allowing users to drag the initial launch point or angle directly on the graph and see the trajectory update in real-time.
- Specific Sprite Elements: Enhance visual cohesion with unique and thematic sprites.


Log in or sign up for Devpost to join the conversation.