Log In  
Follow
NuSan

Having fun in Pico 8. Making prototypes in Unity. Working as engine programmer at Dontnod.
@[email protected]
Itch.io page


Cart #pathofaratron-0 | 2024-04-16 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
15


The game is also available on nusan.itch.io/path-of-aratron

In Path of Aratron, you can send a little demon to visit Dreams. You can control the demon by placing stones on Glyphs.

Each stone is part of a path and will trigger one after the other once you start the summoning ritual.

Solve 25 puzzles of increasing difficulty, you will need to carefully plan ahead and reuse part of your stones, as you don't have an infinite number of them.

This is a programming game inspired by the game Lightbot, it has been made in 72h for Ludum Dare 55

[ Continue Reading.. ]

15
9 comments



Cart #function_tool-2 | 2024-03-17 | Embed ▽ | License: CC4-BY-NC-SA
26


I made a useful tool to look at what parameters are expected from picotron's api
You can also see in what file it is implemented and inspect the code!

It only works for functions that are implemented in lua, when it's done in c it's not visible, and some lua functions don't have much code in them and redirect a variable amount of parameters toward a c function

I also exported the list of functions with their parameters if I could find them:

table	USERDATA
C	USERDATA:__add
C	USERDATA:__band
C	USERDATA:__bor
C	USERDATA:__bxor
C	USERDATA:__div
C	USERDATA:__index
C	USERDATA:__len
C	USERDATA:__mod
C	USERDATA:__mul
C	USERDATA:__newindex
C	USERDATA:__sub
C	USERDATA:__tostring
C	USERDATA:add
C	USERDATA:attribs
C	USERDATA:band
C	USERDATA:bor
C	USERDATA:bxor
C	USERDATA:clear
C	USERDATA:convert
C	USERDATA:copy
C	USERDATA:cross
C	USERDATA:distance
C	USERDATA:div
C	USERDATA:dot
C	USERDATA:get
C	USERDATA:height
C	USERDATA:magnitude
C	USERDATA:matmul
C	USERDATA:matmul2d
C	USERDATA:matmul3d
C	USERDATA:mod
C	USERDATA:mul
C	USERDATA:set
C	USERDATA:sort
C	USERDATA:sub
C	USERDATA:transpose
C	USERDATA:width
table	_G
string	_VERSION
C	_fetch_local
C	_fetch_remote
Lua	_process_event_messages ()
C	_signal
C	_store_local
C	_update_buttons
Lua	abs (a)
C	add
Lua	add_line (s)
Lua	all (c)
C	apply_diff
C	assert
C	atan2
C	blit
C	btn
C	btnp
C	camera
C	cd
C	chr
C	circ
C	circfill
Lua	clear_key (scancode)
C	clip
C	cls
C	cocreate
C	collectgarbage
C	color
Lua	coresume (c, ...)
table	coroutine
C	coroutine:close
C	coroutine:create
C	coroutine:isyieldable
C	coroutine:resume
C	coroutine:running
C	coroutine:status
C	coroutine:wrap
C	coroutine:yield
C	cos
C	costatus
C	count
Lua	cp (f0, f1)
C	create_diff
Lua	create_gui (head_el)
Lua	create_process (prog_name, env_patch, do_debug)
Lua	create_undo_stack (, ...)
C	cursor
Lua	date (format)
table	debug
C	debug:debug
C	debug:gethook
C	debug:getinfo
C	debug:getlocal
C	debug:getmetatable
C	debug:getregistry
C	debug:getupvalue
C	debug:getuservalue
C	debug:setcstacklimit
C	debug:sethook
C	debug:setlocal
C	debug:setmetatable
C	debug:setupvalue
C	debug:setuservalue
C	debug:traceback
C	debug:upvalueid
C	debug:upvaluejoin
C	del
C	deli
C	dtime
Lua	env ()
C	error
Lua	exit (exit_code)
Lua	fetch (location, ...)
Lua	fetch_metadata (filename)
C	fget
C	fillp
C	flip
C	flr
Lua	foreach (c, _f)
C	fset
C	fstat
C	fullpath
Lua	function_info (fun)
C	get
Lua	get_clipboard ()
Lua	get_display ()
Lua	get_draw_target ()
Lua	get_spr (index)
C	getmetatable
Lua	include (filename)
C	ipairs
Lua	key (scancode)
Lua	keyp (scancode)
C	line
C	load
C	ls
Lua	map (ud, b, ...)
table	math
C	math:abs
C	math:acos
C	math:asin
C	math:atan
C	math:ceil
C	math:cos
C	math:deg
C	math:exp
C	math:floor
C	math:fmod
number	math:huge
C	math:log
C	math:max
number	math:maxinteger
C	math:min
number	math:mininteger
C	math:modf
number	math:pi
C	math:rad
C	math:random
C	math:randomseed
C	math:sin
C	math:sqrt
C	math:tan
C	math:tointeger
C	math:type
C	math:ult
Lua	max (a, b)
C	memcpy
Lua	memmap (addr, a, offset, len)
C	memset
Lua	menuitem (m, a, b)
Lua	mid (a, b, c)
Lua	min (a, b)
Lua	mkdir (p)
C	mount
Lua	mouse ()
C	music
Lua	mv (src, dest)
C	next
C	note
Lua	notify (msg_str)
Lua	on_event (event, f)
C	ord
C	oval
C	ovalfill
C	pack
C	pairs
C	pal
C	palt
C	pcall
C	peek
C	peek2
C	peek4
C	peek8
Lua	peektext (i)
C	pget
C	pid
Lua	pod (obj, flags, meta)
C	poke
C	poke2
C	poke4
C	poke8
Lua	print (str, x, y, col)
Lua	printh (str)
C	pset
C	pwd
Lua	pwf ()
C	rawequal
C	rawget
C	rawlen
C	rawset
Lua	readtext (clear_remaining)
C	rect
C	rectfill
Lua	reset ()
Lua	rm (f0)
C	rnd
C	select
C	send_message
C	set
Lua	set_clipboard (, ...)
Lua	set_draw_target (d)
Lua	set_spr (index, s, flags_val)
C	setmetatable
C	sfx
Lua	sgn (a)
C	sin
C	split
C	spr
C	sqrt
C	srand
C	sspr
C	stat
Lua	stop (txt, ...)
Lua	store (location, obj, meta)
Lua	store_metadata (filename, meta)
table	string
Lua	string:basename (self)
C	string:byte
C	string:char
C	string:dump
Lua	string:ext (self)
C	string:find
C	string:format
C	string:gmatch
C	string:gsub
Lua	string:hloc (self)
C	string:len
C	string:lower
C	string:match
C	string:pack
C	string:packsize
Lua	string:path (self)
C	string:rep
C	string:reverse
C	string:sub
C	string:unpack
C	string:upper
Lua	sub (str, ...)
C	t
table	table
C	table:concat
C	table:insert
C	table:move
C	table:pack
C	table:remove
C	table:unpack
Lua	theme (which)
C	time
C	tline3d
C	tokenoid
Lua	tonum (, ...)
C	tonumber
Lua	tostr (val, as_hex)
C	tostring
C	type
Lua	unmap (a)
C	unpack
C	unpod
C	userdata
table	utf8
C	utf8:char
string	utf8:charpattern
C	utf8:codepoint
C	utf8:codes
C	utf8:len
C	utf8:offset
C	vec
Lua	vid (mode)
C	warn
Lua	window (w, h, attribs)
Lua	wrangle_working_file (save_state, load_state, untitled_filename, get_hlocation, set_hlocation)
C	yield

26
6 comments



I extracted all the public names of functions and tables that are visible to Picotron, it might be useful to explore everything that is available
printh doesn't seems to work like in Pico 8 so I couldn't easily make it into a text format, so here is just a screenshot of all the globals functions (in white), tables (in dark blue) and others (in red):

And I also got the functions inside all the tables:

38
19 comments



Cart #resmguse-0 | 2024-02-04 | Code ▽ | Embed ▽ | No License
1


Hi, I found some strange behaviors with sfx and music that looks like bugs
( I marked with "X" when it's behaving strangely)

bug 1: releasing loop of an sfx:

  • play a looping sfx
  • release it's loop: sfx(-2)
  • the sfx will complete it's loop and then stop emitting sound
    X but if you check with "stat" you can see that the sfx is still "playing" with no sound
    X it can still block a channel that the music will not be able to use, for ever until it's replaced by another sfx

bug 2: playing a sfx that is already playing in the music

  • play a looping music that contain a specific non-looping sfx using music()
  • play the same sfx using sfx()

[ Continue Reading.. ]

1
0 comments



Cart #smoothride-0 | 2023-09-29 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
11


One button tiny physic-based platformer made in Pico 8 with code under 1024 compressed bytes, made for #Pico1k jam 2023

Use RIGHT ARROW to accelerate when on the ground
Release RIGHT ARROW to fall faster when in the air
Press UP ARROW to start a new level
Press ENTER and select SEED in the menu to start from level 1 if you want a fixed series of levels

Number on top left is a timer for your run of the level, counted in frames (at 60fps), on top right is the sum for all the levels in your session. For example a casual run of all the seeded levels from 1 to 10 took me 14027 frames. My PB for level 1 is 1071.

Source as p8 are available on https://nusan.itch.io/smooth-ride in two versions, the "comment" version is what I coded with additional comments, so it's readable but the "minimal" version uses a tool (https://thisismypassport.github.io/shrinko8/) to makes it even tinier, it's not readable but it fits into the 1k compressed bytes target

11
3 comments



Cart #floodedcaves-0 | 2022-04-04 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
160

it's flood season, dig caves to redirect an inevitable rising water until you can save everyone
Also available on itch.io for binaries https://nusan.itch.io/flooded-caves

This game has been made in 48h for game jam Ludum Dare 50

Your digging power is limited, it recharges over time. At regular interval, you can save someone by sending your rescue team

You can play the game using a keyboard (action is key C ), a gamepad or a mouse

160
30 comments



Cart #damiandflo-1 | 2024-10-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
25

Game is also available on Itch.io: nusan.itch.io/dami-and-flo

Dami and Flo are two workers on a delivery train. At each station, they have to take input packages at the bottom and store them somewhere in the wagon so they can be easily delivered at a future train stop.

There is a one player mode or a two player local splitscreen mode. You can choose your difficulty with "Timer" option and "Items" quantity option. You can also choose to have more than one wagon, but it can be very difficult especially if you are not playing with a friend.

Between stations, take your time to sort and store all the packages in the wagon. Clear the input area as fast as possible so new packages can be inserted at the next stop. Delivery requests for the next station are displayed at the top of the screen.

[ Continue Reading.. ]

25
6 comments



Cart #snowballnusan-0 | 2019-10-06 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
17

Small game made for Ludum Dare 45 in 48h.

Roll your way through 7 levels and collect snow to make a happy snowman.

Controls:

  • left/right: move
  • up: jump
  • x/c: reset level

The Ludum Dare page is here if you want to vote: https://ldjam.com/events/ludum-dare/45/snowball

17
7 comments



Cart #48406 | 2018-01-20 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
110


DeFacto is a game about building a large automated factory chain.
You must install miners to collect raw resources, transform them in furnaces, and combine them in factories.
The final goal is to send rockets full of robots and by doing so continue to explore the galaxy.
DeFacto is heavily inspired by the game Factorio.
You can also play and support the game on : nusan.itch.io/defacto

Controls :
The game can be played either with the mouse or keyboard

Keyboard :
C : Use selected tool/Interact with factories
V : Open tool selection panel/quit menu
enter : Open main menu (save, load, toggle music ...)

Mouse :
Left clic : Interact/Use selected tool
Right clic : Open tool selection panel/quit menu

To save your game, press enter and select save (button C)

To construct conveyor, inserter or bridge :
you have to keep pressing C/left clic and then enter the direction (arrow key or mouse motion) where the conveyor/inserter/bridge will put it's products
if you only press c/left clic without entering direction, it will place the conveyor, inserter or bridge along the last used orientation

Bridges can also be used to take and insert product, and are faster than inserters.

Starting tips :

  • start by opening the tool panel (V/Right clic) and choosing the miner tool
  • place the miner onto a raw resource field (C/Left clic), the miner will start filling
  • open the tool panel and select the inserter tool
  • place the inserter against the miner by pressing and holding C/left clic and then entering the direction where you want to put the products
  • open the tool panel and select the selling station
  • place the selling station at the end of the inserter
  • if the inserter is oriented correctly, it will start moving resources collect by the miner to the selling station and you will start gaining money
  • once you have a bit more money, start putting raw resources into furnaces, the resulting products will sell at higher prices
  • the next step is to use factories, choose the recipe (C/Left clic on the factory) and insert the required input products to make more advanced ones
110
14 comments



Cart #46982 | 2017-12-04 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
12

"Juggle Jam" is more of a toy than a game. It's based on some mathematical theory behind juggle patterns. It has been made in 48h during LDJAM 40.
You can :

  • load premade juggling patterns
  • create your own juggling patterns using a dedicated in-game editor
  • create a random juggling pattern and let it hypnotise you

If you know how to juggle, you can try to follow the motion and the patterns.
Let me know if you have managed to reproduce some patterns with real balls.
Time spent during the jam actually juggling instead of coding : too much

Controls :

  • keys C and V and arrow keys
  • return : menu/help
    In play mode :
  • c:toggle view
  • v:go to editor mode
    In editor mode :
  • c:grab a ball or a throwing node
  • v:go to play mode

This idea was inspired by a video from Numberphile, you can check it if you want to know more about some math theory of juggling :
https://www.youtube.com/watch?v=7dwgusHjA0Y

[ Continue Reading.. ]

12
1 comment



Plan :

  1. Inception
  2. Gameplay
  3. How to render 3D meshes in Pico 8
  4. Pre-rendered magic
  5. Extracting meshes from Alone in the Dark
  6. Character animation
  7. Memory layout, packing and ram management
  8. Camera placement, tools
  9. Interactions, objects animations, sounds
  10. Optimization
  11. Triangle strips
  12. Future

Disclaimer : my english skills are a bit low and I wrote that post a litlle too fast ...

The final project can be found here

1. Inception

The idea of making a Pico 8 demake of the classic cult game Alone In The Dark started at Halloween 2015. I was searching for a mockup to do using Pico 8 color palette, and Alone in the Dark seemed a pretty good fit. After looking at it, the original is a lot more detailed than what would be possible in Pico 8. Getting from like VGA 256 colors to 128x128 16 colors would not be easy. But the mesh complexity in Alone in the Dark seemed doable in Pico 8. I had just finished a small 3D demo in Pico 8 so I knew that I could probably draw the character at 30 fps and pre-render the background.

The mockup that started everything :

[ Continue Reading.. ]

54
16 comments



Cart #25149 | 2016-07-12 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
190

"A suspicious suicide. A chilling curse. A malevolent power. And a wicked dark secret. This is Derceto ...
Choose between Emily Hartwood and Edward Carnby to explore this virtual adventure game inspired by the work of H.P.Lovecraft."

Controls : Arrow keys to move, 'c' or 'v' to interact
Music can be turned off in the menu ('enter' key)

I wrote a (long) post-mortem of this project : here
This is a small "demake" of Alone in the Dark. You can explore and find your way out of the top two floor of the mansion. I tried to keep it close to the original, but there is no fight (if you see an enemy you will die) and the interaction system is simpler. The 3D meshes of the characters are ripped from the original game.

[ Continue Reading.. ]

190
39 comments



Hi, for a game I'm working on, you can choose between two characters. But I dont have enough space to store the two characters in the same cart. I was thinking about releasing two carts, each one with a character.

The issue is that a given thread in the BBS only show the most recent cart in the "splore" of Pico 8.
Do I need to make two separate threads then ? Or is there a way to show or choose what cart is shown in splore ?

I could also try a multiple cartridge thing, like with a main cart with a selection menu, and two cart for the characters. But I dont think it work in web player or in splore. You would need to download the 3 carts manualy.

Is there a better idea than two separate threads ?

4 comments



Cart #combopool-0 | 2023-12-17 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
313

Update : I made an Android version, with special touch controls, on my Itch.io page
Update 2 : I improved collisions and fixed the "keep perfectly vertical" way of cheating.
Update 4: You can now use the mouse to point and shoot! Also accessibility option to display numbers on the balls, so you can better identify them

Here is Combo Pool, my entry to p8jam2. It's a game where you throw colored marbles against each other. If two marbles of the same color make contact, they merge and upgrade to the next color. Your lifebar diminish with the number of balls on the field. If you lifebar is empty, you enter in a sudden death mode, and your last ball must save you by removing some balls.

[ Continue Reading.. ]

313
69 comments



Cart #24981 | 2016-07-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
254

P.Craft is a crafting game. You wake up on a deserted island, and you have to survive. Gather materials and build your tools. Explore the area and find a cave. Will you find a way to escape the island ?

Update : A new version, P.Craft Deluxe Edition has been released on Itch.io :
https://nusan.itch.io/pcraft

With a saving system, a boss and a few new items to discover.
This new version use the multicartridge system in a complex way that is not yet compatible with the BBS, so I can't upload it here. You can however find the source .p8 files on the Itch.io page as well as binaries for windows, linux and mac.

Controls :
Button 1 (C/Z/N) : open inventory / cancel menu
Button 2 (V/X/M) : use equiped item / valid menu

[ Continue Reading.. ]

254
52 comments



Cart #17759 | 2015-12-14 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
20

Get all rabbits and grow a good amount of grass to go to the next level.

Parts of lit areas can be turned to grass once isolated from light using your snake body.

Controls :
Arrow keys : move snake

There are rabbit holes, so lure rabbits outside by growing grass around them.
Yhen eat them, it will make the snake grow

Moles are your enemies, mainly because they have lasers. Don't let them see you so you can eat them

This game has been made in 48 hours during Ludum Dare 34
You can find a Timelapse made during the LudumDare, followed by a bit of gameplay :

20
7 comments



Cart #17207 | 2015-11-29 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
28

Rain Culture :
Use your divine powers to help nature grow back.
Your main tool is a rain cannon and severall kind of mirrors to redirect water over the plants.

Controls :
C or Z to take control or release the nearest tool
Outside a tool : use arrow keys to move your character
Inside a tool : use arrow keys to rotate the tool

That jam was prety cool, even if I only worked two days on it. I tryed to add another mecanic, where fire could spread from leaves to leaves, but it was too random so I removed it.

28
10 comments



Cart #spacelimit-0 | 2024-02-08 | Code ▽ | Embed ▽ | No License
72

Space limit is a little 3D demo (so no gameplay yet) inspired by Kerbal Space Program.
If it's too slow in your browser, try directly in Pico8

There is nothing in the sprite/tile data, the code is (realy) messy and triangles can only be monochrome.
For this project, I made a blender exporter (based on the .ply one) that can be found here

I also made a mesh converter to vertex/index string (one byte per location, scale limited to 2.5 around origin) to import in Pico 8. I made it in Javascript (If some people want it, I could port it in the blender exporter instead).

[ Continue Reading.. ]

72
26 comments



The new export option is amazing, so I started messing with three.js (a webgl library) to use it with Pico 8.
And it works, so I made a simple proof of concept by drawing the pico 8 output in a sort of cathodic display style. The next step will be to import a 3D model of a computer screen or maybe an arcade cabin. So we can finaly see this great fantasy console.
Feel free to use the source code and mess with it. You can change your game just by replacing the game .js by the one exported from Pico 8.

Here is the page
Here is the source code

10
6 comments



Cart #25047 | 2016-07-10 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
80

Last update : made a better lamp in front of the bike

Here is my first Pico 8 game, it's a "physic" bike game, a bit like the "Trials" series. I tried some experimental "distance field" collision and it work prety well.

  • 7 levels of increassing difficulty
  • 15 collectibles per levels
  • Time clock for speedruns
  • Deathless is possible
  • Deathless with all collectibles is possible but is insanely difficult

Controls :

up = gas
down = brake
left-right = rotate the bike
c to flip bike
v to retry

Old versions :

[ Continue Reading.. ]

80
19 comments





Top    Load More Posts ->