{"id":13418527,"url":"https://github.com/bombomby/optick","last_synced_at":"2025-05-14T03:11:53.344Z","repository":{"id":25950561,"uuid":"29392171","full_name":"bombomby/optick","owner":"bombomby","description":"C++ Profiler For Games","archived":false,"fork":false,"pushed_at":"2024-05-25T15:51:48.000Z","size":81816,"stargazers_count":3007,"open_issues_count":85,"forks_count":302,"subscribers_count":66,"default_branch":"master","last_synced_at":"2025-05-03T15:02:16.800Z","etag":null,"topics":["c-plus-plus","games","performance","profiler"],"latest_commit_sha":null,"homepage":"https://optick.dev","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bombomby.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":"optick","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.paypal.me/optick"]}},"created_at":"2015-01-17T13:37:17.000Z","updated_at":"2025-04-28T22:37:03.000Z","dependencies_parsed_at":"2024-08-05T02:01:29.224Z","dependency_job_id":"74b4a2aa-cd9b-4a9d-a8fe-1df0642af165","html_url":"https://github.com/bombomby/optick","commit_stats":null,"previous_names":["bombomby/brofiler"],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bombomby%2Foptick","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bombomby%2Foptick/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bombomby%2Foptick/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bombomby%2Foptick/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bombomby","download_url":"https://codeload.github.com/bombomby/optick/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254059520,"owners_count":22007771,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","games","performance","profiler"],"created_at":"2024-07-30T22:01:03.341Z","updated_at":"2025-05-14T03:11:48.335Z","avatar_url":"https://github.com/bombomby.png","language":"C#","readme":"# [Optick: C++ Profiler For Games](https://optick.dev)\n![GitHub](https://img.shields.io/github/license/bombomby/optick.svg) ![GitHub release](https://img.shields.io/github/release/bombomby/optick.svg) \u003cbr/\u003e\n![](https://optick.dev/images/screenshots/optick/Optick.png)\nOptick is a super-lightweight C++ profiler for Games.\u003cbr/\u003e\nIt provides access for all the necessary tools required for efficient performance analysis and optimization:\u003cbr/\u003e\ninstrumentation, switch-contexts, sampling, GPU counters.\u003cbr/\u003e\n\u003e Looking for 'Brofiler'? It has been renamed to 'Optick', so you are in the right place.\n## Build Status\n| Windows (x64: msvc) | Linux (x64: clang, gcc) | MacOS (x64: clang, gcc) | Static Code Analysis |\n| ------- | ----- | ----- | --------------------- |\n| [![Windows Build status](https://ci.appveyor.com/api/projects/status/bu5smbuh1d2lcsf6?svg=true)](https://ci.appveyor.com/project/bombomby/optick) | [![Linux+MacOS Build Status](https://travis-ci.org/bombomby/optick.svg)](https://travis-ci.org/bombomby/optick) | [![Linux+MacOS Build Status](https://travis-ci.org/bombomby/optick.svg)](https://travis-ci.org/bombomby/optick) | [![Total alerts](https://img.shields.io/lgtm/alerts/g/bombomby/optick.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/bombomby/optick/alerts/) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/3195c1fa7d554dc1bb9d45dd30454b48)](https://www.codacy.com/app/bombomby/optick?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=bombomby/optick\u0026amp;utm_campaign=Badge_Grade) |\n\n| Features | Windows | Linux | MacOS | XBox | PS4 | UE4 |\n| -------- | ------- | ----- | ----- | ---- | --- | --- |\n| Instrumentation | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :grey_question: | :heavy_check_mark: |\n| Switch Contexts | :heavy_check_mark: ETW | :heavy_check_mark: FTrace | :heavy_check_mark: DTrace | :heavy_check_mark: | :grey_question: | :heavy_check_mark: Win |\n| Sampling | :heavy_check_mark: ETW | | | :grey_question: | :grey_question: | :heavy_check_mark: Win |\n| GPU | :heavy_check_mark: D3D12, Vulkan | :heavy_check_mark: Vulkan | :heavy_check_mark: Vulkan | | | :hourglass_flowing_sand: |\n\n:heavy_check_mark: - works out of the box, :hourglass_flowing_sand: - in progress, :grey_question: - coming soon for the certified developers\n\n## List of Games and Studios using Optick(Brofiler)\n![Allods Team](https://optick.dev/images/studios/AllodsTeam_thumb2.png \"Allods Team\") ![4A Games](https://optick.dev/images/studios/4A_Games_thumb2.png \"4A Gaemes\") ![CryEngine](https://optick.dev/images/studios/CryEngine_thumb.png \"CryEngine\") ![Larian Studios](https://optick.dev/images/studios/Larian_png.png \"Larian Studios\")\n![Skyforge](https://optick.dev/images/studios/Skyforge_thumb.jpg \"Skyforge\") ![Metro Exodus](https://optick.dev/images/studios/Metro_thumb.jpg \"Metro Exodus\")  ![Warface](https://optick.dev/images/studios/Warface_thumb.jpg \"Metro Exodus\") ![Armored Warfare](https://optick.dev/images/studios/ArmoredWarfare_thumb.jpg \"Metro Exodus\")\n\n## Video Tutorial\n[![Optick Video Tutorial](https://github.com/bombomby/brofiler/blob/gh-pages/images/VideoThumbnail.jpg)](https://www.youtube.com/watch?v=p57TV5342fo)\n\n## Basic Integration (one line of code)\n1) Copy 'src' folder from the repository or latest release to your game project\n2) Add `OPTICK_FRAME(\"MainThread\");` macro to the main loop of your game and `#include \"optick.h\"` header\n```c++\n#include \"optick.h\"\n...\nwhile( true ) \n{\n\tOPTICK_FRAME(\"MainThread\");\n\tengine.Update();\n}\n```\n3) Use `OPTICK_EVENT();` macro to instrument a function\n```c++\nvoid SlowFunction()\n{ \n\tOPTICK_EVENT();\n\t...\n}\n```\n4) Add `OPTICK_THREAD(\"Name\");` macro to declare a new thread with Optick\n```c++\nvoid WorkerThread(...)\n{\n\tOPTICK_THREAD(\"Worker\");\n\twhile (isRunning)\n\t{\n\t\t...\n\t}\n}\n```\n5) Edit `optick.config.h` to enable/disable some of the features in specific configs or platforms.\u003cbr/\u003e(e.g. disabling Optick in final builds)\n\n\u003e :warning: If your Game uses **dynamic linking** and you are planning to **use Optick from multiple dlls** within the same executable - please make sure that Optick's code is added to the common **Dynamic Library** and this library is compiled with **OPTICK_EXPORT** define (Static Library won't work).\u003cbr/\u003e\n\u003e You could also use precompiled **OptickCore.dll** which is packaged with every release:\n\u003e - Add `include` folder to the extra include dirs of your project\n\u003e - Add `lib/x64/debug` and `lib/x64/release` to the extra library dirs of your project\n\u003e - Copy `lib/x64/debug/OptickCore.dll` and `lib/x64/release/OptickCore.dll` to the debug and release output folders of your project respectively\n\n## API\nAll the available API calls are documented here:\u003cbr/\u003e\nhttps://github.com/bombomby/optick/wiki/Optick-API\n\n## Unreal Engine\nOptick provides a special plugin for UE4. Check more detailed documentation here: \u003cbr/\u003e\nhttps://github.com/bombomby/optick/wiki/UE4-Optick-Plugin \u003cbr/\u003e\nhttps://github.com/bombomby/optick/wiki/UE5-Optick-Plugin \u003cbr/\u003e\n![](https://github.com/bombomby/brofiler/blob/gh-pages/images/UE5_OpenOptick.jpg)\n\n## Samples\nRun [GenerateProjects_gpu.bat](https://github.com/bombomby/optick/blob/master/tools/GenerateProjects_gpu.bat) to generate project files. To compile the samples you'll need to install VulkanSDK. Alternatively you could use [GenerateProjects.bat](https://github.com/bombomby/optick/blob/master/tools/GenerateProjects.bat) to generate only minimal solution with ConsoleApp sample.\u003cbr/\u003e\nOpen solution `build\\vs2017\\Optick.sln` with generated samples.\n\n| [WindowsD3D12](https://github.com/bombomby/optick/tree/master/samples/WindowsD3D12) | [WindowsVulkan](https://github.com/bombomby/optick/tree/master/samples/WindowsVulkan) | [ConsoleApp](https://github.com/bombomby/optick/tree/master/samples/ConsoleApp) |\n| ---------- | ------------ | ------------- |\n| ![WindowsD3D12](https://optick.dev/images/screenshots/optick/WindowsD3D12.png) | ![WindowsVulkan](https://optick.dev/images/screenshots/optick/WindowsVulkan.png) | ![ConsoleApp](https://optick.dev/images/screenshots/optick/ConsoleApp2.png) |\n| DirectX12 multithreading sample with Optick integration | SaschaWillems's vulkan multithreading sample with Optick integration | Basic ConsoleApp with Optick integration  (Windows, Linux, MacOS) |\n\n## Brofiler\nBrofiler has been renamed into Optick starting from v1.2.0.\u003cbr/\u003e\nAll the future development is going under the new name.\u003cbr/\u003e\nCheatsheet for upgrading to the new version:\n* `BROFILER_FRAME(\"MainThread\");` =\u003e `OPTICK_FRAME(\"MainThread\");`\n* `BROFILER_THREAD(\"WorkerThread\");` =\u003e `OPTICK_THREAD(\"WorkerThread\");`\n* `BROFILER_CATEGORY(\"Physics\", Brofiler::Color::Green);` =\u003e `OPTICK_CATEGORY(\"Physics\", Optick::Category::Physics);`\n* `BROFILER_EVENT(NAME);` =\u003e `OPTICK_EVENT(NAME);`\n* `PROFILE;` =\u003e `OPTICK_EVENT();`\n\n## How To Start?\nYou can find a short instruction here:\u003cbr/\u003e\nhttps://github.com/bombomby/optick/wiki/How-to-start%3F-(Programmers-Setup)\n\n","funding_links":["https://patreon.com/optick","https://www.paypal.me/optick"],"categories":["TODO scan for Android support in followings","Game-BenchMark/Metric/Tool","Tools","C# #","Tools/libraries","**Code**","C++"],"sub_categories":["Profilers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbombomby%2Foptick","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbombomby%2Foptick","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbombomby%2Foptick/lists"}