{"id":15010801,"url":"https://github.com/ashea-code/blui","last_synced_at":"2025-10-04T01:31:21.771Z","repository":{"id":22878030,"uuid":"26226014","full_name":"ashea-code/BLUI","owner":"ashea-code","description":"Rich HTML UI engine for UE4","archived":true,"fork":false,"pushed_at":"2017-12-19T19:35:44.000Z","size":347,"stargazers_count":863,"open_issues_count":32,"forks_count":259,"subscribers_count":120,"default_branch":"master","last_synced_at":"2024-08-31T00:02:08.136Z","etag":null,"topics":["c-plus-plus","chromium","game","html","ue4","unreal-engine"],"latest_commit_sha":null,"homepage":"","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/ashea-code.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-05T15:34:56.000Z","updated_at":"2024-08-12T17:02:17.000Z","dependencies_parsed_at":"2022-08-21T16:10:31.822Z","dependency_job_id":null,"html_url":"https://github.com/ashea-code/BLUI","commit_stats":null,"previous_names":["aaronshea/blui"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashea-code%2FBLUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashea-code%2FBLUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashea-code%2FBLUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashea-code%2FBLUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ashea-code","download_url":"https://codeload.github.com/ashea-code/BLUI/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235208944,"owners_count":18953003,"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","chromium","game","html","ue4","unreal-engine"],"created_at":"2024-09-24T19:36:05.295Z","updated_at":"2025-10-04T01:31:16.462Z","avatar_url":"https://github.com/ashea-code.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![release](https://img.shields.io/github/release/getnamo/BLUI.svg?style=flat-square)](https://github.com/getnamo/BLUI/releases)\n![BLUI-logo](https://cloud.githubusercontent.com/assets/1334174/5969395/201a1202-a7f1-11e4-98a4-12bc6793f830.png)\n\n## Getnamo Fork Notes\n\nFork made to support small additions and changes for certain use cases.\n\nTo install check out the latest releases https://github.com/getnamo/BLUI/releases and drag and drop *Plugins* folder into your project root folder\n\n### Download and Fullscreen Support\n\nContains changes to allow downloading of files via the inbuilt browser.\n\nUpdated CEF build to 3.2556 to support fullscreen videos.\n\n### Convenience Blueprints\n\nThe native plugin didn't contain any self contained drag and drop examples so I've added some.\n\n![examples](https://i.imgur.com/UOCEHM8.png)\n\n### BluiWidget\n\nA user widget (UMG) blueprint which embeds a BLU texture as an image brush. Contains various utility functions to allow loading and parsing urls easily. Call ```InitBluEye``` with starting url and browser window size to start this widget. See *BluiWorldWidgetActorExample* for an example of how it's used in practice.\n\n\n### BluiWorldWidgetActorExample\n\nEncapsulated *BluiWidget* user widget in an actor. Drag and drop this actor into your scene and it will auto-spawn the required *BluTickActor* to make everything work.\n\n![example output](https://i.imgur.com/bso2ah6.png)\n\n*3 BluiWorldWIdgetActorExample actors with ```youtube.com```, ```blui ue4``` and ```local://test.html``` specified as their URL respectively*\n\n\n#### Url\n\nBy default the actor will check the url for ```local://``` protocol and load local content first if detected. This should be placed inside the following directory: ```{project root}/Content/html```. NB: You can still use the vanilla ```blui://``` protocol which will load content relative to your project root.\n\n![local url](https://i.imgur.com/30hk67Z.png)\n\n*e.g. having a test.html file inside your Content/html folder*\n\n\nBasic URL validity is also tested, but you can safely ignore http:// etc. E.g. just specifying youtube.com will resolve correctly\n\n![](https://i.imgur.com/R6we4jO.png)\n\n\nIf your URL isn't valid however, it will redirect the string as a search term e.g. typing a sentance or a search term.\n\n![auto-search](https://i.imgur.com/iDoXyFy.png)\n\n\nYou can untick *Should Auto Search Invalid Url* to disable this behavior.\n\n#### Resize\nBy default the actor has a BLUI resolution of 1000x1000, you can change this by just changing the user widget draw size.\n\n![resize](https://i.imgur.com/kB8X4I5.png)\n\n\n\n### BluTickActor\n\nInstead of ticking in your level bp, I prefer to use a simple actor to do the ticking. Other convenience blueprints may spawn this as necessary so if you use those, you don't ever need to use this directly.\n\n## //End Fork Notes\n\n## HTML powered UI and HUD for Unreal Engine 4\n(Hit up the wiki for a quick start guide!)\n\nDo you use BLUI in your project? I'd really love it if you credit me and it! You can even use the [logo right here!](https://res.cloudinary.com/aaronshea/image/upload/v1423576170/BLUI-Transparent_eu582n.png)\n\nLicense: MIT\n\nWhat is it?\n---------------------------------------\nBLUI is an Unreal Engine 4 plugin that allows easy interaction with the Chromium Embedded Framework. It provides a simple Material Instance and input functions to help streamline the rendering of rich HTML interfaces.\n\nBLUI tries to stay out of the way as much as possible. All rendering of the DOM and processing of the JavaScript happens in a separate process, just like Chromium. BLUI only updates the texture inside the material instance when Chromium requests a redraw, not every tick, saving a bit more processing along the way.\n\nFeatures\n---------------------------------------\n+ Chromium Powered (same thing that powers Google Chrome!)\n+ Fully compatible with every web technology that Chrome/Chromium works with. (HTML5, WebAudio, WebSockets etc.)\n+ No specific ties to ***any*** in game class, simple use Blueprints (or C++) to create a new \"BluEye\" object and grab its material instance, then you can paint it on anything!\n+ Execute JavaScript in the \"browser\" from your game to pass data to the web page\n+ Using `blu_event` JS native function you can pass data from the page's JavaScript back into UE4!\n+ C++ or Blueprints, works with both!\n\nSetting up the editor and project\n---------------------------------------\nThen copy the `BLUI` folder into the \"Plugins\" folder within your **project** directory, and enable the plugin.\n\nRe-generate your project's Visual Studio file and load up the editor. Then check the plugin list to ensure it has been loaded!\n\nUpdating the CEF event loop\n---------------------------------------\n~~You must call the `BluManager::doBluMessageLoop();` method every tick in order for the CEF process to update properly. To do this, override the default GameMode's Tick function and include the `Blu/Public/BluManager.h` header file. You can then call the appropriate method.~~\n\nAs of now, you no longer need to do this. You can simply call a blueprint node to Tick the CEF loop every tick of the level blueprint.\n\n\nLoading Local Files\n---------------------------------------\nSet your default URL or use the \"Load URL\" node/method to load a URL that starts with `blui://` this will point to the directory root of the project or the game (if packaged). So if you wanted to load an HTML file from `YourProject/UI/file.html`, set the URL to `blui://UI/file.html`\n\n\nHUD Example Blueprint\n---------------------------------------\nWithin the release, you'll find an ExampleHUD blueprint file, place this into your project's blueprints directory to try it out! (It's a simple UMG widget pre-configures to accept keyboard and mouse input, with a BluEye instance hooked up to a canvas)\n\n\nShipping Your Game (Linux)\n---------------------------------------\nCopy all contents of the Linux shipping files into your packaged game's `GameName/Binaries/{Linux}`, these are the required files for the Chromium process.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashea-code%2Fblui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fashea-code%2Fblui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashea-code%2Fblui/lists"}