Nekoplay
by tnkiiNekoplay
With Nekoplay you can make browser games right from your browser.
Share games anywhere.
With Nekoplay you can create:
‣ Retro arcade games.
‣ Puzzle and logic games.
‣ Roguelikes and Dungeon crawlers.
‣ Casual minigames.
‣ Prototypes for GameJams.
Examples
Drawing an image
Drawing text
Playing a sound
Defining a function
Learn →
Introduction
With Nekoplay you can create 2D games.
All you need is a modern browser and internet connection.
Online interface.
Nekoplay is hosted at:
nekoplay.niupleis.com
Learning it should be easy, you can follow this guide of 5 lessons:
Introduction
1. Game Setup
2. Tools
3. Text Editor
4. Game
5. Best Practices
Api
To develop games with Nekoplay you need to familiarize yourself with the API.
▹ audio••••••Control audio tracks
▹ camera•••••Control camera position
▹ cursor•••••Handle touch gestures and mouse events.
▹ div••••••••HTML elements
▹ draw•••••••Draw things on screen
▹ ease•••••••Value interpolation
▹ file•••••••Save, load and delete data
▹ get••••••••Load files and resources
▹ hitbox•••••Collision detection
▹ key••••••••Detect keyboard input
▹ scancode•••Detect physical keyboard input
▹ physics••••Physics module
▹ random•••••Generate random numbers
▹ set••••••••Drawing settings
▹ scene••••••Control scenes
▹ Android••••Kotlin Interface
Nekoscript
Nekoscript is a scripting language designed to be simple, expressive and easy to use within Nekoplay.
Its syntax is compatible with Javascript.
You can start by writing normal Javascript code, and Nekoplay will automatically interpret it, applying the necessary transformations to your code.
‣ Nekoscript reference - Nekoscript reference.
‣ JavaScript Guide on MDN - A complete and official reference to learn JavaScript.
‣ The Modern JavaScript Tutorial - A detailed and updated tutorial to understand fundamentals and advanced concepts.
Start making games.
1. Go to the page
2. Configure your game
Enter your game's name, dimensions and graphic settings.
You can change these settings later.
3. Start programming
Use nekoscript to program your game.
Learn by reading tutorials.
Resources like images, audio, or files need to be served from the web.
4. Export your game
Click on file → export
Review your game settings and click continue
The process will take a moment depending on resource size, retry several times if you experience any errors.
When the process completes your .zip file will download automatically.
Interface Guide ↗
Api →
Api
NekoPlay works with its own API specifically designed to make 2D games in a simple and straightforward way.
This API includes functions like draw.rectangle, @key.pressed, draw.sprite, among many others. Everything is designed so you can write game logic without relying on external libraries or complex configurations.
The NekoPlay API is constantly updated, not just to fix bugs, but also to add new functions and simplify processes as the engine evolves.
It works this way because NekoPlay's focus is to be in active development, adapting to new ideas and ways of creating games.
Api 1.4.3
▹ audio••••••Control audio tracks
▹ camera•••••Control camera position
▹ cursor•••••Handle touch gestures and mouse events.
▹ div••••••••HTML elements
▹ draw•••••••Draw things on screen
▹ ease•••••••Value interpolation
▹ file•••••••Save, load and delete data
▹ get••••••••Load files and resources
▹ hitbox•••••Collision detection
▹ key••••••••Detect keyboard input
▹ scancode•••Detect physical keyboard input
▹ physics••••Physics module
▹ random•••••Generate random numbers
▹ set••••••••Drawing settings
▹ scene••••••Control scenes
▹ Android••••Kotlin Interface
Versions →
Current version
The current version is 1.4.3.
v1.4.3
(November 16, 2025)
Export for Windows
file → Export → Windows
Module Windows
Windows.closeGame
Windows.minimize
Windows.maximize
Windows.fullscreen
v1.4.2
(November 12, 2025)
New function in draw
draw.animation()
Bug fix: Errors when exporting for Android.
v1.4.1
(November 05, 2025)
Improvements in manual saving of 'nkp' files.
Improvements in scaling logic.
In audio improvements in control functions.
Bug fix: In div 'onclick' events were not defined.
Bug fix: In camera dynamic camera was not initialized.
v1.4.0
(November 03, 2025)
New module physics
physics.material()
physics.contact()
physics.body()
physics.wire()
physics.chain()
physics.bumper()
physics.prism()
physics.tape()
physics.cable()
physics.gear()
physics.lock()
physics.spring()
physics.torsor()
physics.gravity()
New functions in camera
camera.follow()
camera.frame()
camera.page()
New functions in cursor
cursor.swipe()
cursor.scroll()
New function in div
div.progress()
New function in audio
<audio>.sfx()
<audio>.log()
Nekoscript
Dynamic code execution eval()
New theme
vaporwave
Changes: Circles centered by default in draw.circle
Bug fix: Mouse state remained as active.
Bug fix: Default style of div elements when exporting was not defined.
Bug fix: Fullscreen type was not defined in Android.
Bug fix: every could not correctly access $dt.
Bug fix: wait resulted in error.
v1.3.0
(October 15, 2025)
Export for Android
file → Export → Android
Android module - Kotlin Interface
Android.closeGame
Android.showToast
Android.requestNotifications
Android.notification
Android.fileSet
Android.fileGet
Android.fileDel
Android.fileExists
Android.fileSize
Android.fileList
div.button: Add buttons with events.
Renamed module gesture → cursor
(To avoid ambiguity)
New themes
Card theme
Void theme
Magic variables and functions now written with $
Before: @fps @dt @messages
Now: $fps $dt $messages
New figure: rectangles with rotation
Array of 5 values where the last is the angle:[x, y, w, h, r]
Examples:
draw.rectangle([0, 0, 480, 270, 45])
hitbox.collision([8, 8, 32, 32, 16], [16, 16, 24, 24, 35])
gesture.click([64, 64, 16, 20, 110])
Nekoscript
Access objects outside a string with ': 'Hello ${name}'
Now you can declare global variables without global
typeof - Check the type of an object
twice - Execute once per sequence
otherwise - Alias of else
purr - Define functions (alias of func)
meow - Write to console (alias of print)
forever - Execute forever
sometimes - Execute sometimes
maybe - Execute with probability
?[] - Random variables
Nekoscript Reference →
Graphics improvements
Bug fix: once executes twice in `main`
Bug fix: div elements didn't reset when syncing 'load'
v1.2.0
(September 4, 2025)
div: HTML elements module
div.input: Add text input areas
Command line
Info at: Interface - lesson 4
Nekoscript
every
wait
message
on
once
remove
@messages
Info at: Game Oriented and Constants
v1.1.0
(July 18, 2025)
gesture: Circular area detection
gesture.hover
gesture.active
gesture.click
gesture.released
full integration with Nekoscript
functions from draw module moved to set module
changes to keyboard module
logic was split into two modules key & scancode
keyboard.pressedKeys → @keys
keyboard.pressedScancodes → @scancodes
new function hitbox.inside
ease module rebuilt
audio.newAudio removed
use get.audio
image.newImage removed
use get.image
json module removed
use get module
audio api rebuilt
scene.load removed
scene.change supports "async" loads
iframe based display
previously was a canvas and caused lag
v1.0.2
(June 29, 2025)
Export bug with resources fixed
gesture.getPosition bug on touchscreens fixed
Pipeline bugs fixed
v1.0.1
(June 21, 2025)
Nekoscript integration
v1.0.0
(June 20, 2025)
Auto-scaling
Framework: Load → Loop
Scenes
Global scripts
Chromium support
Scene editor
Script editor
Real-time synchronization
Export
export for <iframe>
export for <canvas>
export with index.html
Save game .nkp
Import game .nkp
Save scenes .nkscene
Import scenes .nkscene
Save scripts .nkscript
Import scripts .nkscript
Languages
English
Español
Português
中文
日本語
한국어
wiki
Api
Audio
Load audio (url)
Play audio
Pause audio
Stop audio
Seek audio
Volume
Volume balance (l/r)
2d camera
change camera
reset camera
Drawing
load image (url)
Draw image
Draw segments (sprites)
Draw rectangles
Draw lines
Draw polygons
Draw circles
Draw arcs
Draw text
Colors
Transparency
Effects
Filters
Value smoothing
Store data (savefiles)
Get stored data
Modify/remove stored data
Mouse input
Touch input
Cursor position
Click position
Cursor state
Calculate cursor state and position
Rectangle collisions
Polygon collisions
Get game information
Frames per second
Game time
Scene time
Scene
Load files
Load json (url)
Load text files (url)
Load Blob (url)
Load binary (url)
Keyboard input
Key states
Active keys
Random numbers
Make random decisions
Calculate probabilities
Load scenes
Scene transition
Themes
night theme
eclipse theme
snow theme
power theme
space theme
tokyo theme
arcade theme
cyberpunk theme
retro theme
lsd theme
arizona theme