Giter VIP home page Giter VIP logo

wickedengine's Introduction

Wicked Engine

Build status License: MIT Join the chat at https://gitter.im/WickedEngine/Lobby follow on Twitter

Overview:

Wicked Engine is an open-source game engine written in C++. The main focus is to be easy to set up and use, light weight, high performance, and graphically advanced. The default renderer is DirectX 11. The DirectX 12 renderer is now available (experimental). Vulkan renderer coming.

The interface is designed to be somewhat similar to the widely popular XNA framework, with overridable Load, Update, Render methods, switchable rendering components, content managers and all together project structure. However, it makes use of the C++ programming language instead of C#, which enables lower level and more performant code in the hand of experienced developers. On the other hand, the developer can also make use of the widely popular Lua scripting language for faster iteration times and more flexible code structure.

Documentation
Scripting API Documentation
Features
Devblog
Videos

Promo

Platforms:

  • Windows PC Desktop (x86, x64)
  • Universal Windows (PC, Phone, XBOX One)

Requirements:

  • Windows 10
  • DirectX 11 compatible GPU
  • Visual Studio 2017
  • Windows 10 SDK

Getting started:

Wicked Engine is provided as a static library. This means, that when creating a new project, the developer has to link against the compiled library before using its features. For this, you must first compile the engine library project for the desired platform. For Windows Desktop, this is the WickedEngine_Windows project. Then set the following dependencies to this library in Visual Studio this way in the implementing project:

  1. Open Project Properties -> Configuration Properties
  2. C/C++ -> General -> Additional Include Directories:
    • ./WickedEngine
  3. Linker -> General -> Additional Library Directories:
    • Directory of your built .lib file (For example ./x64/Release)
  4. Also be sure to compile with a non-DLL runtime library for Release builds:
    • Project settings -> C/C++ -> Code Generation -> Runtime Library -> Multi threaded

When your project settings are set up, time to #include "WickedEngine.h" in your source. I recommend to include this in the precompiled header file. This will enable the use of all the engine features and link the necessary binaries. After this, you should already be able to build your project. But this will not render anything for you yet, because first you must initialize the engine. For this, you should create a main program component by deriving from MainComponent class of Wicked Engine and initialize it appropriately by calling its Initialize() and SetWindow() functions, and calling its run() function inside the main message loop. You should also activate a RenderableComponent for the rendering to begin. You can see an example for this inside the Tests and Editor projects.

If you want to create an UWP application, #define WINSTORE_SUPPORT preprocessor for the whole implementing project and link against the WickedEngine_UWP library.

When everything is initialized properly, you should see a black screen. From this point, you can make an application by writing scripts in either C++ or Lua code. Please see the Tests project for such examples.

Contents:

  • ./Documentation/ - Documentation files
  • ./logo/ - Logo artwork images
  • ./models/ - Sample model files
  • ./WickedEngine/ - Wicked Engine Library project
  • ./Editor/ - Editor project
  • ./Tests/ - Testing framework project
  • ./Template_Windows - Template project for Windows applications
  • ./WickedEngine.sln - Visual Studio Solution
  • ./io_export_wicked_wi_bin.py - Blender 2.72+ script to export scene

Scripting API:

You can use a great number of engine features through the Lua scripting api, which can even be used real time while the program is running. For further details, please check the scripting API documentation: Wicked Engine Scripting API

Editor:

The editor is now available but also work in progress. Just build the editor project and run it, then you will be presented with a blank scene. You can import files exported from Blender (.wio) with the scipt described below. You can also save models into the .wimf format from the Editor and open them. Test model and scene files are now available in the WickedEngine/models directory.

Model import/export:

The only common model format supported right now is Wavefront OBJ.

For advanced model format capabilities, like skeletal animations, particle systems, physics, etc. use the provided Blender exporter python script: io_export_wicked_wi_bin.py

Notes on exporting:

  • Names should not contain spaces inside Blender
    The problem is the c++ side code which parses the text files such as it breaks parsing on spaces. Mesh files are already exported as binary, so those are okay Suggested fix: write binary export for everything
  • Separate files generated
    I've written the exporter to write different categories of the scene to different files for easier debugging from a text editor. If the exporter is rewritten to write binary for everything, such debugging will not be possible so might as well merge the files (except mesh files and error message file)
  • Only animation supported is skeletal animation
  • Animation Action names should contain their armature's name so that the exporter matches them correctly
    Suggested fix: find a better way of matching armatures and actions
  • Animation only with linear curves (so no curves)
    Suggested fix: implement curves support into the engine and the exporter
  • Only one uv map support
    Light maps and other effects requiring multiple uv maps are not possible yet.

Graphics:

InformationSheet

wickedengine's People

Contributors

turanszkij avatar

Watchers

vimga 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.