Aroma is a Native Client game engine that is powered by Lua and enables developers to create games using the scripting language Lua. It allows developers to write games that can be compiled into a Native Client binary and distributed to users. Aroma has been used to develop a range of games and has a JavaScript API that manages the creation and existence of games in the browser. In recent years, there has been a public beta release of Aroma, which has been well-received by users and developers. The migration to Aroma is simple, especially for those already using similar environments, and it offers a more powerful module loader compared to other options.
Characteristics | Values |
---|---|
What is Aroma? | A game engine powered by Lua |
What is Aroma used for? | Game development |
What is Aroma's relationship with JavaScript? | Aroma uses the scripting language Lua, which is written in C, to enable users to write games. |
What are the limitations of Aroma? | Native Client, which Aroma relies on, is only supported by Google Chrome and Native Client applications are only allowed to run if they are installed from the Chrome Web Store. |
What are the benefits of Aroma? | Aroma is a great platform for game development despite the limitations of Native Client. |
What are some specific use cases of Aroma? | Aroma can be used to create a simple "Hello World!" game or to implement more complex functionality like printing to the console. |
What are some considerations when using Aroma? | To test a game locally, the page must be served by a web server and cannot be opened from the file system. |
What are some resources for learning more about Aroma? | The Aroma website, GitHub repository, and Discord server provide additional information and support. |
What You'll Learn
Aroma's use of the scripting language Lua
Aroma is a game creation framework that targets Chrome's Native Client. It uses the Lua programming language to enable users to write games. Lua is written in C, which means it can be compiled into a Native Client binary and distributed to users visiting the site where the game is located.
Aroma uses the JavaScript API to manage the creation and existence of the game in the browser. JavaScript is also used to create the Aroma viewport and start the execution of the game. The API can be used to set up the size of the game viewport and handle any text sent to standard out or standard error.
Aroma also implements parts of the LÖVE Lua API, making it easy to port existing games.
The Aroma object serves two parts: it contains all Aroma submodules, and it is where callback functions are assigned. These callback functions are assigned to the aroma object and are called by the engine when certain events happen.
Aroma facilitates resource loading and handles drawing to an OpenGL-powered canvas. It reuses features of the browser whenever possible, for tasks such as decoding images, playing audio, and downloading code.
The Power of Lingering Aroma and Its Impact
You may want to see also
The advantages of Aroma over LÖVE API
Aroma is a Native Client game engine that is powered by Lua, a scripting language. It is used to write games, which can then be compiled into a Native Client binary and distributed to users. On the other hand, LÖVE API is an existing game framework.
- Aroma uses the Lua scripting language, which is fast and has all features available, unlike Lua ported to JavaScript.
- Aroma is a great platform for game development as it enables developers to package compiled code of languages such as C and C++ into binaries.
- Aroma makes it easy to set up the size of the game viewport and handle any text sent to standard out or standard error.
- Aroma provides a simple way to port your game by assigning aroma to love at the top of your game code.
- Aroma has a built-in function to get the framerate, and it also works seamlessly with Chrome's FPS counter.
Jasmine Aromatherapy: Benefits and Uses for Your Wellbeing
You may want to see also
Aroma's migration from Tiramisu
Aroma and Tiramisu are custom firmware (CFW) for the Nintendo Wii U. They are launched in the same way, via PayloadLoader installed into the Health & Safety app, with the only difference being the files on the SD card. You can have both on your SD card and boot into either one.
The migration to Aroma is simple, especially if you’re already coldbooting into the EnvironmentLoader (e.g. booting into Tiramisu). Aroma is just another Environment that will be installed by copy-pasting a new directory onto the SD card. The installation of the EnvironmentLoader is exactly the same as for Tiramisu.
Given these similarities between Aroma and Tiramisu, they share the basic feature set. Both are built on top of the same Mocha version, updates are blocked, Bloopair is supported, and the AutobootModule including the quick start menu are working too.
Aroma has a lot of features that Tiramisu doesn't, like runtime plugins for Amiibo emulation, FTP, and full region-free support. However, some legacy homebrews don't work with Aroma, for example, RetroArch.
If you want to switch back to Tiramisu from Aroma, go to EnvironmentLoader. If Aroma is set to default, use the button to change the default to Tiramisu. Make sure Tiramisu is booting to the correct menu (Wii U Menu) and that it's in the right environment.
Wine Aroma: The Language of Wine Connoisseurs
You may want to see also
Aroma's compatibility with Google Chrome
Aroma is a game engine that uses the scripting language Lua to enable users to write games. Lua is written in C, which can be compiled into a Native Client binary and distributed to users visiting the site where the game is located. Native Client is a technology built into modern versions of Chrome that enable developers to package compiled code of languages such as C and C++ into binaries that can be downloaded and run on a client's browser.
Aroma is compatible with Google Chrome as it uses the Native Client engine, which is supported by the browser. However, there are a couple of caveats to this compatibility. Firstly, Native Client applications can only run if they are installed from the Chrome Web Store. Secondly, when testing a game locally, the page it runs on must be served by a web server and cannot be opened from the file system.
To enable Native Client everywhere, including for local testing, users can type chrome://flags into the Chrome address bar, press enter, and then enable the setting. This will allow for the development of games using Aroma without the need to install from the Web Store.
The JavaScript API is also used in Aroma to manage the creation and existence of games in the browser. It is used to create the Aroma viewport and start the execution of the game. This API allows users to set up the size of the game viewport and handle any text sent to standard out or standard error.
Liquid Gold Aromas: What's the Deal?
You may want to see also
Aroma's ability to handle text output
Aroma is a Native Client game engine that is powered by Lua. It allows developers to write games using the scripting language Lua, which can be compiled into a Native Client binary and distributed to users.
The JavaScript API in Aroma manages the creation and existence of the game in the browser. It is used to create the Aroma viewport and start the game's execution. This API can also be used to set up the size of the game viewport and handle any text sent to standard output or standard error.
When creating a game in Aroma, the following code is used:
Var container = document.getElementById("game_container");
Var game = new Aroma(container, 640, 480, {
Loaded: function() {
Alert("Aroma is ready!");
}
});
In this code, the `
The `loaded` event handler is called when the Aroma binary has finished downloading. In this example, it simply displays an alert message. However, you can also use the `execute` method to run arbitrary Lua code in Aroma, such as drawing text to the viewport:
Var game = new Aroma(container, 640, 480, {
Loaded: function() {
Game.execute("function aroma.draw() aroma.graphics.print('Hello World!', 10, 10) end");
}
});
By default, standard output in Aroma is sent to Chrome's `console.log`, and standard error is sent to `console.error.` This means that any text printed using the Lua `print` function will appear in the console, and any errors will also be displayed there.
Aroma provides a lot of flexibility in handling text output. You can customize where the output is written, such as logging errors to a server or displaying messages in the game interface. The "std_out" and "std_err" event handlers in the Aroma constructor allow you to specify functions that are called whenever Lua writes to standard output or standard error, giving you control over how this text is handled and displayed.
Wine Aroma: The Art of Sensory Science
You may want to see also
Frequently asked questions
No, Aroma is still functional and can be used for game development. However, it has some limitations, such as only being supported by Google Chrome and requiring installation from the Chrome Web Store.
Yes, there are other game development engines and frameworks available, such as Unity, Unreal Engine, and Phaser. These alternatives offer different features and capabilities, so the choice depends on your specific needs and requirements.
Aroma JS offers a simple and lightweight solution for creating games. It utilizes the scripting language Lua, which is fast and efficient. Aroma also provides a JavaScript API that allows you to manage the creation and execution of your game in the browser, including handling text output and errors.
Yes, the Aroma website provides documentation, tutorials, and references. Additionally, there is an Aroma Discord server where you can seek help and connect with other developers using Aroma.
While Aroma is a capable game development tool, it has some limitations and bugs that you should be aware of. For example, there are restrictions on where Native Client applications can run, and there may be missing features or performance issues when porting Lua to JavaScript without using Native Client.
-
Anisha Riggs
Author Perfumer
-
Seamus Hammond
Author Editor Reviewer