Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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
  2. Directory Structure
  3. Prerequisites
  4. Quick Start (macOS)
  5. Building
  6. Running
  7. Notes
  8. Contributing
  9. 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.
  • C++ Compiler: C++17-capable (Clang on macOS).
  • SDL2: Use Homebrew on macOS: brew install sdl2.

Quick Start (macOS)

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

bazel build //src/main:game_app

Running

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:

    git checkout -b feature/YourFeature
  3. Commit Your Changes:

    git commit -m "Add your feature"
  4. Push to the Branch:

    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.

About

C++ game engine designed for high performance and modularity

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages