Giter VIP home page Giter VIP logo

wyrdangames / u3d Goto Github PK

View Code? Open in Web Editor NEW

This project forked from u3d-community/u3d

0.0 0.0 0.0 159.24 MB

Open-source, cross-platform 2D and 3D game engine built in C++

Home Page: https://u3d.io

License: MIT License

Shell 0.17% C++ 78.08% Python 0.02% ActionScript 0.16% Objective-C 0.05% Lua 4.28% Kotlin 0.19% HTML 0.08% CMake 2.92% GLSL 1.21% Batchfile 0.14% MAXScript 0.69% HLSL 1.41% SCSS 0.01% AngelScript 10.61% Mustache 0.01%

u3d's Introduction

U3D Logo

U3D

android ios linux macos windows GitHub Discord

U3D is a open source, lightweight, cross-platform 2D and 3D game engine implemented in C++ and released under the MIT license. Forked from Urho3D and greatly inspired by OGRE and Horde3D.

Main website: https://u3d.io/

License

Licensed under the MIT license, see LICENSE for details.

Features

U3D Screenshot

  • Cross-platform support: Windows, Linux, macOS, iOS, tvOS, Android, Raspberry Pi (and other generic ARM boards), and Web with Emscripten
  • Powerful and configurable rendering pipeline, with implementations for forward, light pre-pass and deferred rendering
  • OpenGL, OpenGL ES, WebGL and Direct3D11
  • All-in-one editor built with ActionScript, allowing you to easily customize the editor to your game needs
  • Two scripting languages available for creating game logic: Lua and AngelScript
  • UI, localization and database subsystems
  • Component based scene model
  • Skeletal, vertex morph and node animation
  • Point, spot and directional lights
  • Cascaded shadow maps
  • Particle rendering
  • Geomipmapped terrain
  • Static and skinned decals
  • LODs
  • Automatic instancing
  • Software rasterized occlusion culling
  • Post-processing
  • HDR and PBR rendering
  • 2D sprites and particles that integrate into the 3D scene
  • Task-based multithreading
  • Hierarchical performance profiler
  • Scene, object and prefab load/save in binary, XML and JSON formats
  • Keyframe animation of object attributes
  • Background loading of resources
  • Keyboard, mouse, joystick and touch input
  • High-performance math library
  • Physics powered by Bullet and Box2D
  • Networking powered by SLikeNet
  • Pathfinding and Crowd Simulation via Recast/Detour
  • Supported images: JPEG, PNG, TGA, BMP, PSD, GIF, HDR
  • Compressed image support: DDS, KTX, PVR
  • Import virtually any 3D file format via Assimp
  • 2D and 3D audio playblack, Ogg Vorbis and WAV support
  • TrueType font rendering
  • Built as a single external library, can be linked statically or dynamically

Design Goals

  • Productive: Do not reinvent the wheel. Engine should reduce development time. Less yak shaving, more game making.
  • Fast: Compile and run fast. Parallelize when possible.
  • Modular: Only use what you need. Flexibility for power users.

Conventions

U3D uses the following conventions and principles:

  • Left-handed coordinates. Positive X, Y & Z axes point to the right, up, and forward, and positive rotation is clockwise.
  • Degrees are used for angles.
  • Clockwise vertices define a front face.
  • Audio volume is specified from 0.0 (silence) to 1.0 (full volume)
  • Path names use slash instead of backslash. Paths will be converted internally into the necessary format when calling into the operating system.
  • In the script API, properties are used whenever appropriate instead of Set...() and Get...() functions. If the setter and getter require index parameters, the property will use array-style indexing, and its name will be in plural. For example model->SetMaterial(0, myMaterial) in C++ would become model.materials[0] = myMaterial in script.
  • Raw pointers are used whenever possible in the classes' public API. This simplifies exposing functions & classes to script, and is relatively safe, because SharedPtr & WeakPtr use intrusive reference counting.
  • When an object's public API allows assigning a reference counted object to it through a Set...() function, this implies ownership through a SharedPtr. For example assigning a Material to a StaticModel, or a Viewport to Renderer. To end the assignment and free the reference counted object, call the Set...() function again with a null argument.
  • No C++ exceptions. Error return values (false / null pointer / dummy reference) are used instead. Script exceptions are used when there is no other sensible way, such as with out of bounds array access.
  • Feeding illegal data to public API functions, such as out of bounds indices or null pointers, should not cause crashes or corruption. Instead errors are logged as appropriate.
  • Third party libraries are included as source code for the build process. They are however hidden from the public API as completely as possible.

Community

U3D's development is community-driven and completely independent, empowering developers to build and design better tools to help indie game development. We invite you to familiarize yourself with our Code of Conduct and get to know us on:

If you'd like to help build U3D, we have a guide just for you! Check it out: Contributor Guide.

Credits

U3D is greatly inspired by Urho3D, OGRE and Horde3D. Additional inspiration & research used:

U3D uses the following third-party libraries:

Media credits

  • Jack and mushroom models from the realXtend project. (https://www.realxtend.org)
  • Ninja model and terrain, water, smoke, flare and status bar textures from OGRE.
  • BlueHighway font from Larabie Fonts.
  • Anonymous Pro font by Mark Simonson.
  • NinjaSnowWar sounds by Veli-Pekka Tätilä.
  • PBR textures from Substance Share. (https://share.allegorithmic.com)
  • IBL textures from HDRLab's sIBL Archive.
  • Dieselpunk Moto model by allexandr007.
  • Mutant & Kachujin models from Mixamo.
  • Skies from Polyhaven. (https://polyhaven.com/license)

License / copyright information included with the assets as necessary. All other assets (including shaders) by U3D authors and licensed similarly as the engine itself.

Contributors

u3d's People

Contributors

cadaver avatar weitjong avatar aster2013 avatar urho3d-travis-ci avatar eugeneko avatar 1vank avatar monkeyfirst avatar mike3d avatar cosmy1 avatar thecomet avatar friesencr avatar rokups avatar alexparlett avatar arnislielturks avatar juj avatar hjmediastudios avatar orefkov avatar plasmadev5 avatar superwangkai avatar ninjastone avatar darwikey avatar iainmerrick avatar klaussilveira avatar konstantintomashevich avatar szamq avatar enhex avatar svifylabs avatar predatormf avatar lumak avatar jtippetts avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.