Tulip is a small, modular C++ game engine built with Bazel. This branch focuses on a minimal, working workflow: SDL2 windowing/input and OpenGL rendering (a sample triangle), with ECS and core utilities.
- Features
- Directory Structure
- Prerequisites
- Quick Start (macOS)
- Building
- Running
- Notes
- Contributing
- License
- Rendering: OpenGL-based rendering pipeline with support for shaders, meshes, materials, and scenes.
- Audio: FMOD integration for audio playback and management.
- Physics: Bullet Physics for realistic physics simulations.
- Input Handling: SDL2 for robust input and window management.
- Scripting: Lua integration for dynamic scripting capabilities.
- AI: Basic AI systems for entity behavior.
- Networking: ENet-based networking for client-server communication.
- Tools: In-game level editor for designing and managing game levels.
- Entity-Component-System (ECS): Flexible ECS architecture for managing game entities and their behaviors.
- Resource Management: Efficient resource loading and management system.
- Bazel: Install via the official guide.
- C++ Compiler: C++17-capable (Clang on macOS).
- SDL2: Use Homebrew on macOS:
brew install sdl2.
git clone https://github.com/crrapi/tulip-engine.git
cd tulip-engine
# Ensure SDL2 is installed
brew install sdl2
# Build and run
bazel run //src/main:game_appbazel build //src/main:game_appbazel run //src/main:game_appYou should see an SDL2 window rendering a colored triangle. Press Esc or close the window to quit.
- This configuration removes heavy optional subsystems (audio, physics, networking, scripting, editor) to keep the sample runnable. They can be reintroduced later.
- On macOS we link
OpenGL.framework; on Linux we link-lGL. Adjust as needed for your platform.
Contributions are welcome! Please follow these steps:
-
Fork the Repository.
-
Create a Feature Branch:
git checkout -b feature/YourFeature
-
Commit Your Changes:
git commit -m "Add your feature" -
Push to the Branch:
git push origin feature/YourFeature
-
Open a Pull Request.
Please ensure your code adheres to the project's coding standards and includes appropriate documentation.