Skip to content

Game engine project written in pure rust for learning about rust and game tech

License

Notifications You must be signed in to change notification settings

study-game-engines/ikari

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ikari

License: MIT

Ikari is a game engine project written in pure rust for learning about rust and game tech. It is developed to have decent visuals and good performance, ideally supporting frame rates of 144 or higher.

Most of the rendering features were implemented by following the awesome tutorials on learnopengl and learnwgpu.

Hopefully one day it will be used in a real game 😃

Features:

  • Physically-Based Rendering materials (PBR)
  • Image-Based Lighting
  • Point and directional lights
  • Soft shadow edges with randomized Percentage Closer Filtering
  • Adjustable Bloom
  • Adjustable camera exposure
  • Skeletal animations
  • Auto-generated box collision meshes, including support for skinned characters
  • Rapier integration for physics
  • Oddio integration for audio
  • Iced integration for UI
  • wgpu-profiler
  • Dynamic render scale
    • Can be used to do supersampling anti-aliasing
  • glTF asset import
    • Supports scene graph, meshes, materials, animations, and skinning
  • Linux, Windows & MacOS support
  • Wireframe mode
  • Unlit materials
  • Equirectangular and cubemap skybox support
  • Scene graph
  • CPU-side frustum culling
  • Mipmapping
  • Reverse-Z for better depth accuracy / less z-fighting

Try it out

cargo run --release --bin example_game

See console logs for list of available controls

Screenshots / Videos:

PBR glTF assets

screenshot_1

Point-lights + shadows

screenshot_2

Mesh skinning + animations

2022-06-28_18-00-26.mp4

Rapier physics

physics_test.mp4

Auto-generated character collision meshes

character_collisions_test.mp4

Iced UI + wgpu-profiler

screenshot_3

Profiling

You can profile ikari with tracy via profiling crate. To do that you have to:

  • Download tracy 0.9
  • Build ikari by adding --features="tracy" to the cargo command
  • Run ikari and tracy (in any order), when the game is loading tracy will start profiling

If something does not work it is possible that the crate profiling has been updated and is no longer aligned with the tracy version and a more recent one must be used.

Tracy linux install:

Based on instructions from here: wolfpld/tracy#484

  • Install glfw, freetype2
    • (e.g. aur packages glfw-x11, freetype2). maybe different on Ubuntu
  • Install libcapstone
  • Install tracy 0.9
  • Run tracy
    • ./Tracy_release
  • I made a desktop entry to make it easier to start from the system menus:
    • Not sure if it works in other distros, tested on Arch/KDE
    • Create file ~/.local/share/applications/tracy.desktop with contents:
      [Desktop Entry]
      Name=Tracy
      Exec=/home/david/Programming/tracy/profiler/build/unix/Tracy-release
      Type=Application
      

About

Game engine project written in pure rust for learning about rust and game tech

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%