All Projects → TwoAbove → noita-tools

TwoAbove / noita-tools

Licence: MIT license
A collection of tools for Nolla's Noita that help get insight into seeds and find ones with special constraints.

Programming Languages

typescript
32286 projects
c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
lua
6591 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to noita-tools

alia
a declarative UI library for C++
Stars: ✭ 76 (+245.45%)
Mutual labels:  emscripten
web-ifc
Reading and writing IFC files with Javascript, at native speeds.
Stars: ✭ 314 (+1327.27%)
Mutual labels:  emscripten
WorkerStore
Small React state container running inside WebWorker
Stars: ✭ 32 (+45.45%)
Mutual labels:  webworker
webgl
http://gam0022.net/webgl/
Stars: ✭ 43 (+95.45%)
Mutual labels:  emscripten
Header-Only-GL-Helpers
A collection of header files that can ease OpenGL programming
Stars: ✭ 25 (+13.64%)
Mutual labels:  emscripten
wasm4
Build retro games using WebAssembly for a fantasy console.
Stars: ✭ 711 (+3131.82%)
Mutual labels:  emscripten
physx-js
PhysX for JavaScript
Stars: ✭ 80 (+263.64%)
Mutual labels:  emscripten
AECforWebAssembly
A port of ArithmeticExpressionCompiler from x86 to WebAssembly, so that the programs written in the language can run in a browser. The compiler has been rewritten from JavaScript into C++.
Stars: ✭ 15 (-31.82%)
Mutual labels:  emscripten
kvs
Lightweight key-value storage library for Browser, Node.js, and In-Memory.
Stars: ✭ 126 (+472.73%)
Mutual labels:  webworker
stockfish.js
The strong open source chess engine Stockfish compiled to JavaScript and WebAssembly using Emscripten
Stars: ✭ 140 (+536.36%)
Mutual labels:  emscripten
rogue.js
JavaScript porting of original Rogue source code using Emscripten
Stars: ✭ 33 (+50%)
Mutual labels:  emscripten
wasm-raytracer
a performance comparison of a simple raytracer in JavaScript, asm.js, WebAssembly, and GLSL
Stars: ✭ 158 (+618.18%)
Mutual labels:  emscripten
vrEmuLcd
Character LCD emulator library (C99 engine, web front-end).
Stars: ✭ 45 (+104.55%)
Mutual labels:  emscripten
magnum-extras
Extras for the Magnum C++11/C++14 graphics engine
Stars: ✭ 26 (+18.18%)
Mutual labels:  emscripten
gba.ninja
A port of visualboyadvance-m to JavaScript and a custom frontend
Stars: ✭ 69 (+213.64%)
Mutual labels:  emscripten
node-seal
Homomorphic Encryption for TypeScript or JavaScript - Microsoft SEAL
Stars: ✭ 139 (+531.82%)
Mutual labels:  emscripten
wrenjs
The Wren Programming Language, in the browser
Stars: ✭ 28 (+27.27%)
Mutual labels:  emscripten
cheatgui
The Noita cheat gui mod, now in its own repo
Stars: ✭ 59 (+168.18%)
Mutual labels:  noita
indexeddb-orm
Indexed DB ORM
Stars: ✭ 53 (+140.91%)
Mutual labels:  webworker
em-onscripter
An emscripten port of onscripter-jh
Stars: ✭ 26 (+18.18%)
Mutual labels:  emscripten

Noitool

A web app with many things Noita.

Helps you get a specific seed for your specific needs.

Current features include:

  • Get seed info
  • Search for a seed
  • Live seed info viewer

Technical details and implementation details that I found interesting

The code for finding LC and AP values was transferred from noita_unicorn's Program.cs from c# to c++.

Also, I took inspiration from cr4xy for extra features. You rock! <3

The c++ code is then compiled to wasm and is run in web workers (and partly in the main thread). The performance improvements are 20-fold by transferring seed functions (like randoms and lc & ap recipes) from a typescript implementation to c++, even with the call overhead from worker -> wasm code.

For map generation, wang tiles are used. In lua/xml code, ARGB color formats are used for color targeting. In browsers, in general, RGB[A] is used. The transformed colors (in data json) use RGB[A] to homogenize color format.

Development

Prerequsites:

  • emscripten is installed
  • npm i -g google-closure-compiler
  • Node
  • Yarn

After extracting noita wak, run

find . -type f -not -path '*/\.*' -exec sed -i 's/----------------------//g' {} +;
find . -type f -not -path '*/\.*' -exec sed -i 's/<!------------ MATERIALS -------------------->/<!-- MATERIALS -->/g' {} +;
find . -type f -not -path '*/\.*' -exec sed -i 's/<!------------ MATERIALS ------------------ -->/<!-- MATERIALS -->/g' {} +;
find . -type f -not -path '*/\.*' -exec sed -i 's/<!-- attack_ranged_min_distance="60" -->//g' {} +;
find . -type f -not -path '*/\.*' -exec sed -i 's/<!---------------- shield ---------------- -->//g' {} +;

to fix comments for the xml parser

For emscripten, some edits need to be done to enable the closure compiler:

emscripten installation and required changes

I recommend using the git repo to install emsdk. Install the latest version.

After, there are a small amount of changes that might need to be done:

  • /usr/share/emscripten/tools/building.py

Here, go to line ~888 Verify that this is there:

def get_closure_compiler():
  # First check if the user configured a specific CLOSURE_COMPILER in thier settings
  if config.CLOSURE_COMPILER:
    return config.CLOSURE_COMPILER
  • ~/.emscripten

Add the closure compiler path to the config.

CLOSURE_COMPILER = ["<path to prefix>/bin/google-closure-compiler"]

To get the prefix, run:

npm config get prefix

Installation (after emscripten): yarn

Running: yarn dev

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].