Behind the scenes with Playdate's "Pulp" game maker and CodeWordPlay
Вставка
- Опубліковано 22 сер 2024
- This video takes you behind the scenes with the Playdate word game CodeWordPlay to show you how it was made and go over some tips on how to make a game in Panic's browser-based Playdate game-making tool, Pulp, as well as its language Pulpscript.
Topics/notes:
- Variables are globally scoped!
- Using custom events to get around some of Pulp's limitations
- Pulpscript, events, and where script is stored
- Using spreadsheets to make words and levels in a word game
Honestly there's so much more to all this, and stuff I show but don't explicitly talk about in the video. So if it helps, I might do another one! Who knows!
Links:
CodeWordPlay on Playdate's Catalog: play.date/game...
Pulp help document (from Panic): play.date/pulp...
Pulpscript help document (from Panic): play.date/pulp...
This is so helpful as someone trying to get to grips with Pulp. Thank you!
Very informative! Thanks Mike!
Awesome! So helpful thanks!
I found this really helpful. One question I had was, did you have any trouble getting the game to run on the device in terms of the initial startup? The second game I made has about 5,000 lines of code and I ended up having to learn a lot about optimizing in order to get it down to that amount. The problem that I ran into and what I found out was that it was taking too long on the Playdate to open the game. That sounds like no big deal, sure a 1 second load time-whatever, EXCEPT when it loads a game from Pulp it basically is building the whole game out at once and in doing so, if it takes longer than 0.5 seconds to load, it then proceeds to crash. Even when running diagnostics on it, it shows it has plenty of memory, processing power etc. but it still generates a crash. What was your experience with that? I am really curious why I ran into that so much, but you didn't seem to, despite having MUCH more code.
My game is shown towards the end of the video I have on my channel if you wanna see, maybe its the moving parts? After watching your video, it really makes me wanna try again making something bigger in Pulp, I am just wondering how you did it and what advice you have?
Cheers!
Hey there! Thanks for checking this out, I'm happy it was helpful. I'm sorry I don't check UA-cam often for comments so I missed this a while ago. Hopefully by now you've got it sorted out, but just in case, maybe I can help narrow the issue down.
When it comes to optimization, Orkn (developer of Resonant Tale) is a legend. This is a helpful thread: devforum.play.date/t/order-of-events-reference/12198
My thing is: Learn what gets called on command, and what gets called every single frame. The draw event in the player code and the loop event in the game code, for example, get called every single frame, so that's 20 times per second. I've had to pay close attention to this with one of my next games, where there's HUD elements drawn every frame, so I have to limit them just enough so the FPS doesn't bog down (pro tip, hold the down button while launching your game on the device and it'll put an FPS counter in the corner for you, I only just learned that recently).
Looking at your video, I don't think the load time is too rough. What I did in CodeWordPlay and also in one of my next games, Crankblade (randomly generated levels in that one, check out the announce video from a while ago on my channel), is I put a bunch of the necessary code in custom events in the ROOM's code. That way I can do something like [tell event.room to call "levelLoad" end] and it'll only get called once when I want it too. The same principle can apply to all those tile swaps you have going on in your game, you could do a variety of triggers (confirm/cancel, update, bump, etc) and then call the event only when you need it. So when you're doing the load event in the game's code, only do some initial items at first and save the rest to take you from the title screen to the room. It's hard to tell if you're already doing that, of course.
I will say, my initial prototypes for Crankblade take about as long to load, so I'm hoping it's not an issue with your Playdate as far as the crashing is concerned. I don't think the load time looks that bad, but the crash is concerning. In all likelihood, there's something going on in your code that's causing it. Are you on the Playdate Squad discord? There's a Pulp specific thread in there that's massively helpful, we all help each other troubleshoot these sorts of issues.
Looking forward to seeing what you make!
@@MikeSuszek No worries! I did fiddle with it and got it down to a functioning game, albeit one that drops in fps the longer it goes on.
My problem with that game is I could only make it function on an emit basis which just wasn't ideal. I've set future games to be less movement on the screen to purposefully avoid that.
Thanks for the FPS counter, that is magnificent!!
That is another good idea. Thanks for sharing that.
I am and have gotten some good help there. Thanks for the help. I am eager to see your next game!!