https://github.com/crrapi/tulip-engine
C++ game engine designed for high performance and modularity
https://github.com/crrapi/tulip-engine
cpp game-engine gpu-acceleration
Last synced: 9 months ago
JSON representation
C++ game engine designed for high performance and modularity
- Host: GitHub
- URL: https://github.com/crrapi/tulip-engine
- Owner: crrapi
- Created: 2024-12-21T19:20:51.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-10-06T22:41:04.000Z (9 months ago)
- Last Synced: 2025-10-13T04:04:25.227Z (9 months ago)
- Topics: cpp, game-engine, gpu-acceleration
- Language: C++
- Homepage:
- Size: 51.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Tulip
**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.
## Table of Contents
1. [Features](#features)
2. [Directory Structure](#directory-structure)
3. [Prerequisites](#prerequisites)
4. [Quick Start (macOS)](#quick-start-macos)
5. [Building](#building)
6. [Running](#running)
7. [Notes](#notes)
8. [Contributing](#contributing)
9. [License](#license)
## Features
- **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.
## Prerequisites
- **Bazel:** Install via the [official guide](https://bazel.build/install).
- **C++ Compiler:** C++17-capable (Clang on macOS).
- **SDL2:** Use Homebrew on macOS: `brew install sdl2`.
## Quick Start (macOS)
```bash
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_app
```
## Building
```bash
bazel build //src/main:game_app
```
## Running
```bash
bazel run //src/main:game_app
```
You should see an SDL2 window rendering a colored triangle. Press `Esc` or close the window to quit.
## Notes
- 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.
## Contributing
Contributions are welcome! Please follow these steps:
1. **Fork the Repository.**
2. **Create a Feature Branch:**
```bash
git checkout -b feature/YourFeature
```
3. **Commit Your Changes:**
```bash
git commit -m "Add your feature"
```
4. **Push to the Branch:**
```bash
git push origin feature/YourFeature
```
5. **Open a Pull Request.**
Please ensure your code adheres to the project's coding standards and includes appropriate documentation.