[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6367":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":39,"readmeContent":40,"aiSummary":41,"trendingCount":16,"starSnapshotCount":16,"syncStatus":42,"lastSyncTime":43,"discoverSource":44},6367,"WickedEngine","turanszkij\u002FWickedEngine","turanszkij","3D engine with modern graphics","https:\u002F\u002Fwickedengine.net",null,"C",7088,753,161,113,0,18,73,8,39.63,"MIT License",false,"master",[25,26,27,28,29,30,31,32,33,34,35,36,37,38],"audio","directx12","entity-component-system","fbx","game-engine","global-illumination","gltf","input","jolt-physics","lua","pbr","raytracing","vrm","vulkan","2026-06-12 02:01:18","\u003Cimg align=\"left\" src=\"Content\u002Flogo_small.png\" width=\"180px\"\u002F>\n\n# Wicked Engine\n\n[![Github Build Status](https:\u002F\u002Fgithub.com\u002Fturanszkij\u002FWickedEngine\u002Fworkflows\u002FBuild\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fturanszkij\u002FWickedEngine\u002Factions)\n[![Discord chat](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F602811659224088577?logo=discord)](https:\u002F\u002Fdiscord.gg\u002FCFjRYmE)\n[![Forum](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fforum-join-blue)](https:\u002F\u002Fwickedengine.net\u002Fforum\u002F)\n\u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fintent\u002Ffollow?screen_name=turanszkij\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fturanszkij.svg?style=social\" alt=\"follow on Twitter\">\u003C\u002Fa>\n\u003Cbr\u002F>\n[![Steam](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSteam-%23000000.svg?logo=steam&logoColor=white)](https:\u002F\u002Fstore.steampowered.com\u002Fapp\u002F1967460\u002FWicked_Engine\u002F)\n[![Itch.io](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fitch.io-%23FF0B34.svg?logo=Itch.io&logoColor=white)](https:\u002F\u002Fturanszkij.itch.io\u002Fwicked-engine)\n\n\u003Cbr\u002F>\n\u003Cimg align=\"right\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Fgirl_pose.png\" width=\"240px\"\u002F>\nWicked Engine is an open-source 3D engine with modern graphics. Use this as a C++ framework for your graphics projects, a standalone 3D editor, LUA scripting or just for learning.\u003Cbr\u002F>\n\n- [Website](https:\u002F\u002Fwickedengine.net\u002F)\u003Cbr\u002F>\n- [Features](features.txt)\u003Cbr\u002F>\n- [Editor Manual](Content\u002FDocumentation\u002FWickedEditor-Manual.pdf)\u003Cbr\u002F>\n- [C++ Documentation](Content\u002FDocumentation\u002FWickedEngine-Documentation.md)\u003Cbr\u002F>\n- [Lua Documentation](Content\u002FDocumentation\u002FScriptingAPI-Documentation.md)\u003Cbr\u002F>\n- [Videos](https:\u002F\u002Fwww.youtube.com\u002Fplaylist?list=PLLN-1FTGyLU_HJoC5zx6hJkB3D2XLiaxS)\u003Cbr\u002F>\n\nYou can get the full source code by using Git version control and cloning https:\u002F\u002Fgithub.com\u002Fturanszkij\u002FWickedEngine.git, or downloading it as zip. You can also download nightly packaged builds of the Editor here (requires Github sign in): [![Github Build Status](https:\u002F\u002Fgithub.com\u002Fturanszkij\u002FWickedEngine\u002Fworkflows\u002FBuild\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fturanszkij\u002FWickedEngine\u002Factions)\n\n\u003Cbr\u002F>\n\n\u003Cimg align=\"left\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Fguy_pose.png\" width=\"240px\"\u002F>\n\n### Platforms:\n- Windows 10+\n- Linux\n- Mac OS\n- Xbox Series X|S\n- PlayStation 5\n\n### How to build: \n\n\u003Cimg align=\"right\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Fvideoprojectors.gif\" width=\"320px\"\u002F>\n\n#### Windows\nTo build Wicked Engine for Windows 10 or newer, open the `WickedEngine.sln` solution file with the latest Visual Studio. When it's opened, press F5, then Wicked Engine and the Editor application will be built and then start. You can check out other sample projects in the solution too.\n\nIf you want to develop a C++ application that uses Wicked Engine, you can build the WickedEngine_Windows static library project and link against it. Including the `\"WickedEngine.h\"` header will attempt to link the binaries for the appropriate platform, but search directories should be set up beforehand. For example, you can set additional library directories to `$(SolutionDir)BUILD\\$(Platform)\\$(Configuration)` by default. For examples, see the `Samples\u002FTemplate_Windows`, `Samples\u002FTests`, and `Editor_Windows` projects. \n\nYou can also use cmake to build on windows with these commands:\n```\ncmake -B build\ncmake --build build --config Release\n```\n\n\u003Cimg align=\"right\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Ffps.gif\" width=\"320px\"\u002F>\n\n#### Linux\nTo build the engine for Linux, use Cmake. You can find a sample build script for Ubuntu [here](.github\u002Fworkflows\u002Fbuild.yml) (in the linux section). \n\nOn Linux you will need to ensure some additional dependencies are installed, such as Cmake (3.7 or newer), g++ compiler (C++ 17 compliant version) and SDL2. For Ubuntu 20.04, you can use the following commands to install dependencies:\n\n\u003Cimg align=\"right\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Ffighting_game.gif\" width=\"320px\"\u002F>\n\n```bash\nsudo apt update\nsudo apt install libsdl2-dev\nsudo apt install build-essential\n```\n\nTo build the engine, editor and tests, use `cmake` and then `make`:\n```bash\nmkdir build\ncd build\ncmake .. -DCMAKE_BUILD_TYPE=Release\nmake\n```\n\n\u003Cimg align=\"right\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Fcharacter_grass.gif\" width=\"320px\"\u002F>\n\nIf you want to develop an application that uses Wicked Engine, you will have to link to libWickedEngine.a and `#include \"WickedEngine.h\"` into the source code. For examples, look at the Cmake files, or the Tests and the Editor applications.\n\n#### Mac OS\nTo build  the engine for Mac OS, use the provided .xcodeproj files with the Xcode development environment, for example:\n- WickedEngine\u002FWickedEngine.xcodeproj to build static library\n- Editor\u002FEditor.xcodeproj to build the Wicked Editor\n- Samples\u002FTemplate_MacOS\u002FTemplate_MacOS.xcodeproj to build a minimal template application for MacOS\n\nIf you want to develop an application that uses Wicked Engine, you will have to link to libWickedEngine.a and `#include \"WickedEngine.h\"` into the source code. You also need to add references to the following Apple SDKs: `Metal`, `AppKit`, `GameController`. I also recommend to set up a custom working directory in the Product->Scheme->Edit Scheme->Options->custom working directory = `$(PROJECT_DIR)`, this will better match the development experience in Visual Studio. For examples, look at the Template_MacOS and Editor projects.\n\n#### Xbox Series X|S\nXbox Series specific extension files required for building are currently private.\n\n#### PlayStation 5\nPlayStation 5 specific extension files required for building are currently private.\n\n\n### Examples:\n\n#### Initialization (C++):\n\n\u003Cimg align=\"right\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Fclouds.gif\" width=\"320px\"\u002F>\n\n```cpp\n\u002F\u002F Include engine headers:\n#include \"WickedEngine.h\"\n\n\u002F\u002F Create the Wicked Engine application:\nwi::Application application;\n\n\u002F\u002F Assign window that you will render to:\napplication.SetWindow(hWnd);\n\n\u002F\u002F Run the application:\nwhile(true) {\n   application.Run(); \n}\n```\n\n#### Basics (C++):\n```cpp\napplication.Initialize(); \u002F\u002F application will start initializing at this point (asynchronously). If you start calling engine functionality immediately before application.Run() gets called, then you must first initialize the application yourself.\n\nwi::RenderPath3D myGame; \u002F\u002F Declare a game screen component, aka \"RenderPath\" (you could also override its Update(), Render() etc. functions). \napplication.ActivatePath(&myGame); \u002F\u002F Register your game to the application. It will call Start() once, then Update(), Render(), etc. from now on every frame...\n\nwi::scene::LoadModel(\"myModel.wiscene\"); \u002F\u002F Simply load a model into the current global scene\nwi::scene::GetScene(); \u002F\u002F Get the current global scene\n\nwi::scene::Scene scene2; \u002F\u002F create a separate scene\nwi::scene::LoadModel(scene2, \"myModel2.wiscene\"); \u002F\u002F Load model into a separate scene\nwi::scene::GetScene().Merge(scene2); \u002F\u002F Combine separate scene with global scene\n\nmyGame.setFXAAEnabled(true); \u002F\u002F You can enable post process effects this way...\n\nwi::RenderPath2D myMenuScreen; \u002F\u002F This is an other render path, but now a simple 2D one. It can only render 2D graphics by default (like a menu for example)\napplication.ActivatePath(&myMenuScreen, 0.8f); \u002F\u002F activate the menu after a 0.8 second fade out, the previous path (myGame) will be stopped\n\nwi::Sprite mySprite(\"image.png\"); \u002F\u002F There are many utilities, such as a \"sprite\" helper class\nmyMenuScreen.AddSprite(&mySprite); \u002F\u002F The 2D render path is ready to handle sprite and font rendering for you\n\nwi::audio::Sound mySound;\nwi::audio::CreateSound(\"explosion.wav\", &mySound); \u002F\u002F Loads a sound file\nwi::audio::SoundInstance mySoundInstance;\nwi::audio::CreateSoundInstance(&mySound, &mySoundInstance); \u002F\u002F Instances the sound file, it can be played now\nwi::audio::Play(&mySoundInstance); \u002F\u002F Play the sound instance\nwi::audio::SetVolume(0.6, &mySoundInstance); \u002F\u002F Set the volume of this soundinstance\nwi::audio::SetVolume(0.2); \u002F\u002F Set the master volume\n\nif (wi::input::Press(wi::input::KEYBOARD_BUTTON_SPACE)) { wi::audio::Stop(&mySoundInstance); } \u002F\u002F You can check if a button is pressed or not (this only triggers once)\nif (wi::input::Down(wi::input::KEYBOARD_BUTTON_SPACE)) { wi::audio::Play(&mySoundInstance); } \u002F\u002F You can check if a button is pushed down or not (this triggers repeatedly)\n```\n\n#### Scripting (LUA):\n```lua\n-- Set a rendering path for the application\npath = RenderPath3D;\napplication.SetActivePath(path);    -- \"application\" is created automatically by wi::Application\n\n-- Load a model entity into the global scene:\nentity = LoadModel(\"myModel.wiscene\");\n\n-- Load a model entity into a separate scene:\nscene2 = Scene()\nentity2 = LoadModel(scene2, \"myModel2.wiscene\");\n\n-- Combine the separate scene with the global scene:\nscene.Merge(scene2);\n\n-- Get the current global scene:\nscene = GetScene();\n\n-- Move model to the right using the entity-component system:\ntransform = scene.Component_GetTransform(entity);\ntransform.Translate(Vector(2, 0, 0));\n\n-- Print any WickedEngine class information to the backlog:\ngetprops(application);\t-- prints the application methods\ngetprops(scene);\t-- prints the Scene class methods\ngetprops(path);\t-- prints the deferred render path methods\n\n-- Play a sound:\nsound = Sound()\naudio.CreateSound(\"explosion.wav\", sound)\nsoundinstance = SoundInstance()\naudio.CreateSoundInstance(sound, soundinstance)  -- several instances can be created from one file\naudio.Play(soundinstance)\naudio.SetVolume(0.6, soundinstance)  -- sets the volume of this soundinstance\naudio.SetVolume(0.2)  -- sets the master volume\n\n-- Check for input:\nif(input.Press(KEYBOARD_BUTTON_LEFT)) then\n   audio.Play(soundinstance); -- this will play the sound if you press the left arrow on the keyboard\nend\n```\n\n\u003Cimg align=\"right\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Finverse_kinematics.gif\" width=\"320px\"\u002F>\n\n\u003Ci>(You can enter lua scripts into the backlog (HOME button), or the startup.lua script which is always executed on application startup if it is found near the app, or load a script via dofile(\"script.lua\") command)\u003C\u002Fi>\n\nFor more code samples and advanced use cases, please see the example projects, like the Template_Windows, Tests, or Editor project. There are also sample models and scripts included with Wicked Engine in the Content\u002Fmodels and Content\u002Fscripts folders. Check them out to learn about more features.\n\n### Scripting API:\n\n\u003Cimg align=\"right\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Fgrass.gif\" width=\"320px\"\u002F>\n\nYou can use a lot of of engine features through Lua scripting. The included applications, like the Editor,\ncontain a scripting input method toggled by the \"Home\" key. A text screen will be presented where the user can type in LUA commands.\nFor further details, check the scripting API documentation: [Wicked Engine Scripting API](Content\u002FDocumentation\u002FScriptingAPI-Documentation.md)\n\n### Model import\u002Fexport:\nThe native model format is the \u003Cb>WISCENE\u003C\u002Fb> format. Any application using Wicked Engine can open this format efficiently.\n\n\u003Cimg align=\"right\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Fcharacter_lookat.gif\" width=\"320px\"\u002F>\n\nIn addition, the Editor supports importing some common model formats: \n- \u003Cb>OBJ\u003C\u002Fb>\n- \u003Cb>FBX\u003C\u002Fb>\n- \u003Cb>GLTF, GLB\u003C\u002Fb>\n- \u003Cb>VRM, VRMA\u003C\u002Fb>\n- \u003Cb>PLY\u003C\u002Fb>\n\nYou can import models into the Editor, and save them as \u003Cb>WISCENE\u003C\u002Fb>, then any Wicked Engine application can open them.\u003Cbr\u002F>\n\n\u003Cimg align=\"right\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Fsnowstorm.gif\" width=\"320px\"\u002F>\n\n### Graphics API:\nThe default renderer is `DirectX 12` on Windows and `Vulkan` on Linux.\nYou can specify command line arguments (without any prefix) to switch between render devices or other settings. Currently the list of options:\n\u003Ctable>\n  \u003Ctr>\n\t\u003Cth>Argument\u003C\u002Fth>\n\t\u003Cth>Description\u003C\u002Fth>\n  \u003C\u002Ftr>\n  \u003Ctr>\n\t\u003Ctd>vulkan\u003C\u002Ftd>\n\t\u003Ctd>Use the Vulkan rendering device on Windows\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n\t\u003Ctd>debugdevice\u003C\u002Ftd>\n\t\u003Ctd>Use debug layer for graphics API validation. Performance will be degraded, but graphics warnings and errors will be written to the \"Output\" window\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n\t\u003Ctd>gpuvalidation\u003C\u002Ftd>\n\t\u003Ctd>Use GPU Based Validation for graphics. This must be used together with the debugdevice argument. Currently DX12 only.\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n\t\u003Ctd>gpu_verbose\u003C\u002Ftd>\n\t\u003Ctd>Enable verbose GPU validation mode.\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n\t\u003Ctd>igpu\u003C\u002Ftd>\n\t\u003Ctd>Prefer integrated GPU selection for graphics. By default, dedicated GPU selection will be preferred.\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n\t\u003Ctd>amdgpu\u003C\u002Ftd>\n\t\u003Ctd>Prefer AMD GPU selection for graphics.\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n\t\u003Ctd>nvidiagpu\u003C\u002Ftd>\n\t\u003Ctd>Prefer Nvidia GPU selection for graphics.\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n\t\u003Ctd>intelgpu\u003C\u002Ftd>\n\t\u003Ctd>Prefer Intel GPU selection for graphics.\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n\t\u003Ctd>alwaysactive\u003C\u002Ftd>\n\t\u003Ctd>The application will not be paused when the window is in the background.\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n\n\u003Cimg align=\"right\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Ftalking.gif\" width=\"320px\"\u002F>\n\u003Cbr\u002F>\n\n### Other software using Wicked Engine\n- \u003Ca href=\"https:\u002F\u002Fwww.game-guru.com\u002Fmax\">Game Guru MAX\u003C\u002Fa>: Easy to use game creator\n- \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=0SxXmnSQ6Q4\">Flytrap\u003C\u002Fa>: Demoscene production by qop\n- \u003Ca href=\"https:\u002F\u002Fyoutu.be\u002FmbmNU5QVM8A?si=9sDMS1LrMsz03f5r\">doddering\u003C\u002Fa>: Demoscene production by qop\n- \u003Ca href=\"https:\u002F\u002Fturanszkij.itch.io\u002Fwicked-shooter\">Wicked Shooter\u003C\u002Fa>: FPS sample game in Wicked Engine\n- \u003Ca href=\"https:\u002F\u002Fturanszkij.itch.io\u002Fgrass-zen\">Grass Zen\u003C\u002Fa>: A relaxing game made with Wicked Engine where you control the wind\n- Your project: add your project to this readme and open a pull request\n\n\u003Cbr\u002F>\n\n### Troubleshooting\nIf you are having trouble getting the applications to run, make sure that you satisfy the following conditions:\n- If you built the application with Visual Studio, run it from the Visual Studio environment, where the executable working directory is set up to be the Project directory (not the build directory where the exe will be found)\n- If you want to run an application without Visual Studio, either copy the executable from the BUILD directory to the correct project directory, or set the working directory appropriately. You can also check the Working directory setting in Visual Studio to find out the right working directory of every project. \n\n\u003Cimg align=\"right\" src=\"https:\u002F\u002Fgithub.com\u002Fturanszkij\u002Fwickedengine-gifs\u002Fraw\u002Fmain\u002Fweather.gif\" width=\"320px\"\u002F>\n\n- If you experience crashes, you can try these to find out the problem:\n\t- make sure your environment is up to date, with latest graphics drivers and operating system updates.\n\t- see if there is a log.txt in the working directory of the application (most likely near the application exe)\n\t- request help on the [Forum](https:\u002F\u002Fwickedengine.net\u002Fforum\u002F), [Discord](https:\u002F\u002Fdiscord.gg\u002FCFjRYmE) or [Github issue](https:\u002F\u002Fgithub.com\u002Fturanszkij\u002FWickedEngine\u002Fissues)\n\t- build the engine in Debug mode and try to run it, see where it crashes\n\t- run the engine with the `debugdevice` command argument and post the text from your console output window when the crash happens\n\t\t- for very advanced users, using `gpuvalidation` with `debugdevice` will print additional graphics debug information\n","Wicked Engine 是一个具有现代图形技术的开源3D引擎。它支持DirectX 12和Vulkan等现代图形API，具备物理模拟、全局光照、PBR材质以及光线追踪等功能，并且集成了Jolt Physics物理引擎和Lua脚本语言，方便用户进行高级自定义。该引擎适用于多种场景，包括但不限于游戏开发、实时渲染应用、虚拟现实项目以及教育领域，既可作为C++项目的框架使用，也提供了一个独立的3D编辑器来帮助快速原型设计与内容创作。",2,"2026-06-11 03:06:42","top_language"]