Ski Play - First Tile scrolling Ski Arcade Game with Pulp

Hi I’m SamPlay I already publish a first little demo on the playdate forum of an action rpg little draft game with Pulp.

Ski Play is an arcade ski game made with Pulp. It's base on tile scrolling for making a gameplay that make you feel like skiingi. My first idea was to create a game with only one Room for the gameplay.

An itch.io is available with the pdx for free of the version v0.1 (alpha) of skiplay

For now I thing the playdate hardware version 0.1 will lag I need too refactor and rethink my saving method… more on that on this post

So here I think the way of you should dev with pulp a full demo with high considerations for the hardware if you game is created with Pulp

playdate < sdk simulator < web simulator in term of performances

I started my first dev around begin February and in 12th February I post this video on a discord and people seem intrigue by the game so it decide me to continue it to make it more complete

The first version was simple: just get score and time if the time is 0 you lost and the scrolling screen for simulate skiing
here is the first version video with access to the playlist with the advancement of devs

Sometime after a speed feature was created it’s base on modulation (with modulus calcul) of the framerate of the playdate (20 logic game time) I update and check more and more in function of the speed
for exemple at speed one update all 20 frame speed 2 all 15frames update the scrolling etc

Time is always base on second still ! (+1s each 20 frame)

after finding how to register sound for video I made this one

lLter I wanted to add somekind of race within the game to do that I add an opponent and distance relatively from the player
Afterward I done a long play to show in a game if you could play it seem I need equilibration in the gameplay (time you can get so much fast..)

Here the first long play video

After I wanted to at least test the crank pulp script programming and gameplay so I add a tile jump that make jump the player and a spinning capacity to the player activate with the crank.

Also the player when stopped before this version. also the opponent was stop so I had another engigneclock variable checked at speed 0 so that the opponent still can advance when you’re stop

Latterly I created a topboard room with an algorithm of sorting (Yeah! we do computer science with pulp :stuck_out_tongue: ) and bad clock to equilibrate a bit the time you win to much to get normal clock

Toward I started thinking about the opponent and notion of race. It seem obvious to me that you start last and finish First so I thought about 120 opponent ! (That spoil to check this video)

After that I need to think : 1) save the check of if you encounter and opponent or not in memory like some kind of pokedex. Here I made an error it seem (more on that later. In the post)

I didn’t wanted to create 120 variable in memory for that so a created chunk of string that represents the fact if I had my opponents or not encounter and find way to check that string but it seem to heavy on the sdk so even more in the playdate :s I’ll surely go backward if I want the playdate hardware run the game I guess…
I also needed that the code wasn’t duplicate for each opponent so I conceder use function mimic of pulp script :)…
I also made the music when you ski down and up tempo if you accelerate or not.

I create a start room and a menu to access to the opponent room where to have there name and there catch sentence and sound of the opponent

But ! The sdk go in we can try the game with it… the load of my memory check algo take around 30second at the start game

The speed doesn’t work at 10 so i think the sdk emulator work differently with the pdx file

Sound sometime are different between sdk emulator and the web player

This project was an adventurous way to play with creativity also do another think with pulp then a story game and create another type of what can be do with Pulp.
I think pulp script is pretty neat.

It’s my 2 pulp game and I don’t have video game creating experiences before pulp
Music and sound was fun to create but I didn’t have time I wanted to develop them so it game some chunky 8bit loop that I think fun in this context for this game

About the futur development :
Some bug I talk about on the itch page
You can try the laggy pdx ski play v0.1 on itch.io here

(With safari within pulp I can’t download the pdx file)

I wanted this game to run in playdate hardware it’ll be very could if someone could try to see what it make with the playdate
I really love substring function for pulp script ! I thing with those typer of function I’ll don’t need. A big string reconstruction algorithm large.
nor one variable per opponent that would help I think a lot of people…

For gonna continue the game like I said in the itch.io I also wanna create a guide dev pdf for dev tile scrolling game and arcade with pulp

I like to create. A pulp music game and also explore the sdk to see what are the possibility…

NFT and V0.3 are now available : https://opensea.io/collection/ski-play

If someone try with the playdate hardware I need to know how it work !
I use the sdk on a Mac intel

1 Like

Small correction done v 0.1.1 (no more crash when your opponent go over -50 of distance)
so that you can play full run after the long load :slight_smile:
the new file is Ski-Play-alpha-0.1.1.pdx.zip

the V0.1.0 was Ski-play-by-samplay.pdx if you have this version change please !

1 Like

Hi here a new update for ski play

It's now without bug and room loading algo

There is objectif to do to get more point !

memory now no charging at beginning by doing memory emit array simulation

The opponent can go more then 50 distance away !

You can download the new file on

the one calll Ski-Play-v-0.2.0-alpha2.pdx.zip

I feel like. the next step is too change all the game so that the scrolling don't lag

What I do Is make all tile go one up per update of position (from the speed of the player)
I feel like I should create on all tile an emit method call "move" that all update of one instead of move all the. tile screen one ahead for that to make it work bittern the. Playdate SDK. and after the playdate hardware

Thank for futur advice

Hello everybody !

I update to the. v0.3 the alpha III !
This one crash rarely and I redo the all tile scrolling system by emit and call a function that move the tile instead of XY looping on tile.
By that the game doesn't lag anymore for any game speed ! It's as playable as. on the web editor !
I remove most of game crash link to position of opponent
I remove some gamelock screen (by pressing a you can go another. room)
I remove I. think most of the visual bug

I share for free all the 120 opponents : there are available on Ski Play by Samplay (Playdate Pulp) by samplay

I made them NFT. that you could shake on https://opensea.io/collection/ski-play

I'm. very happy to share this morelike what I had. on the web player but for the SDK I had some futur like hard and. medium mode and other think like a night mode or a snow visual system !

(Sorry the video doesn't. have sound :o )

Enjoy the game !
I think next iteration need your feedback because the game need more equilabration

I know there is some ways. to. break the law of my game so I. already think to patch some stuff nextly

I. think in this state it might work on the playdate. if anyone could try :slight_smile:

1 Like

Hi @samPlay!! I love your game - I was wondering how you implemented the scroll feature? I've been trying to do the same for a game I am making. Thank you in advance!

Hi @Debbie.

It really depend of what you want to achieve.
In ski play 0.4.0 the tile are randomly generated and expose at the bottom of the screen and they call a scrolling function by recursively calling it to swapping up to x,y-1 until y is under 0...
i change the variable that wait with a variable that changing the waited time.

In previous version i was emitting at each frame i wanted i use emit "upward" and swap the tile to up and make the previous position replace with a white tile.
Emit is calling all the tile of the screen so it wasn't optimal in device.
Before I was using emit function to much for scroll up all the tile and check all the tile

If you want a pure scrolling with predefined tile you might check/ask Orkn about his example available in Art8 Tile Hill