I Made a Game That Lets You Share Levels Using Morse Code | Devlog 0

Поділитися
Вставка
  • Опубліковано 1 жов 2024
  • This week, I'm starting a new Playdate game devlog series! I'm making a Mario Maker-like platforming game where you can build custom levels, but with a twist - you can share your levels using an audio data transfer tool I've made. The Playdate currently has no networking API, so this is the only way to transfer data wirelessly. Check it out!
    Check out my new book "The Beginner's Guide to Lua for Game Development" and learn how to code using Lua!
    squidgod.itch....
    Support me on Patreon and get this + all my games and their source code!: / squidgoddev
    Join my Discord and say hi or ask questions! I'll respond :): / discord
    Follow me on Twitter to see what I'm up to!: / squidgoddev

КОМЕНТАРІ • 104

  • @SquidGodDev
    @SquidGodDev  2 роки тому +12

    Check out my new book here if you're interested in learning programming! squidgod.itch.io/lua-for-game-development Also my Patreon if you want to check out the source codes for all my games! www.patreon.com/squidgoddev

  • @gold4668
    @gold4668 2 роки тому +55

    No way, a squid, a god and a dev at the same time???!!!11

  • @blankenstein1649
    @blankenstein1649 2 роки тому +32

    i love seeing all the creative thinking going into the play date community. it's really impressive seeing what you guys are making on such a humble little device!

    • @SquidGodDev
      @SquidGodDev  2 роки тому +4

      I've personally been super impressed by all the 3D rendering stuff that people are doing

    • @blankenstein1649
      @blankenstein1649 2 роки тому

      @@SquidGodDev honestly, all of it is great. but it's true, there are some really impressive 3D models being shown off! it'd be awesome if someone made a game like solstice on the NES, but fully 3D.

  • @-haso
    @-haso 2 роки тому +8

    You’re a digital mad scientist 👨‍🔬

    • @SquidGodDev
      @SquidGodDev  2 роки тому +1

      Always got stuff cookin' 🧪

  • @AutumnRain
    @AutumnRain 2 роки тому +11

    wow that's cool! also, i'm surprised to hear there's not any networking between playdates. I remember seeing that it has bluetooth in it to be integrated later or something, i assumed that would be available to devs for networking like that. but I guess we'll see. but if that doesn't pan out, it's very cool to see something like this to have some sort of way playdates can communicate with each other

    • @SquidGodDev
      @SquidGodDev  2 роки тому +10

      Yeah there is wifi and bluetooth on device, but according to the main developer working on it, it's apparently a pain to work with so it's taking a while for them to put together an API that's available to all developers.

  • @yorgle
    @yorgle 2 роки тому +7

    Clever! Love it! You can always expand on this further, by adding kansas city standard-like encoding, hamming code, checksums to make sure it all worked properly, or like encode binary data in RS232 like signalling... etc... :D

  • @paulytheking7365
    @paulytheking7365 2 роки тому +2

    If you ever need any music for the game, I’d be happy to make some.

  • @v0xl
    @v0xl Рік тому +2

    Why not use binary data for levels?
    Lua strings are pure 8-bit and binary-safe (you can use all values from 0 to 0xff/255)
    And also I think compression should greatly reduce level size, even something simple like RLE or huffman codes. (or both?)

    • @SquidGodDev
      @SquidGodDev  Рік тому +1

      Yeah for sure. I didn't put that much thought into it with the idea that I'd come back later and optimize it. Just wanted to get a proof of concept cause I wasn't even sure if it would work.

  • @SeanStClair-cr9jl
    @SeanStClair-cr9jl 2 роки тому +2

    This is REALLY fuckin cool! Since you're already listening for "volume" thresholds, I wonder if you can't transmit data as a modulation of volume, rather than time...? Something like, 3 different volume levels (or even 3 different notes, if that's way more distinguishable? I have no idea how robust the mic api is! haha) and just transmit at a constant 50ms, or whatever is most reliable?
    I know there will obviously be some volume variance depending on how the person is holding their device up to the speaker, so maybe you could do it based on relative volume, rather than a hard threshold? Like, maybe you could start each transmission with a series of "calibrating" pulses (to determine the base relative volume level and also establish timing). And who knows, if the timing is consistent, maybe this could even help you parse data from a noisy environment? Anyway, just a rambling thought! Keep up the great work
    Edit: Oh also, if you were to listen to relative volume for data rather than timing, maybe the little levels of accuracy (like, with timing you currently said it's around 50ms) is even better? Who knows, maybe you could even do base 4, if it's very reliable at parsing 4 different relative volume levels! And you might not have to deal with the framerate problem as much, since it's less important if you drop a frame when listening to volume rather than timing.

    • @SquidGodDev
      @SquidGodDev  2 роки тому +1

      Yeah that's a great point. I was originally thinking of doing that, but the difference in volumes based on distance and how loud the phone was made me decide not to go with that, but calibrating it at the start might work. I'll definitely keep at it and try tweaking it to try and shorten the transmission time + make it more reliable.

  • @FirithStudio
    @FirithStudio 2 роки тому +4

    Awesome way to download levels!

    • @SquidGodDev
      @SquidGodDev  2 роки тому +2

      Thanks Official Firith Studio Channel™!!

    • @FirithStudio
      @FirithStudio 2 роки тому

      @@SquidGodDev 😅

  • @masukomi
    @masukomi 2 роки тому +2

    You really need to look into the various data encoding & transmiting formats that ham radio has come up with. There's some really impressive stuff they've come up with, with far greater information density than morse code, and is specifically designed to work with "noisy" (radio sense) environments.

    • @SquidGodDev
      @SquidGodDev  2 роки тому

      Ohh that's a great idea - I'll definitely look into it. Thanks!

  • @Dino-ny1vz
    @Dino-ny1vz 2 роки тому +2

    wow amazing video!!! very impressive, and such a cool idea

  • @CitrusArchitect
    @CitrusArchitect 2 роки тому +2

    So cool!!! What an amazing concept. I wonder if the play date can detect different notes as well, if more complexity were needed for where the tiles were placed.
    This is a pie-in-the-sky idea, and probably way too hard to implement, but it’d be AMAZING if you saw the level start building itself and rendering AS the tone plays. It’d be like watching the world slowly coming to life!

    • @SquidGodDev
      @SquidGodDev  2 роки тому +2

      Well, with the Lua API, it can't, but there may be a way with the C API. I need to do some more testing on that front.

  • @jkdubb
    @jkdubb 2 роки тому +2

    This is impressive. Way to push the limits of the software.

  • @juana.m.garcia4260
    @juana.m.garcia4260 Рік тому +1

    I know I'm a bit late, but regardless. I think to ensure that the Playdate doesn't translate random sounds from the environment into letters, there should be some sort of characteristic sound for the start of the transmission level and one for the end of the transmission

  • @enrique6693
    @enrique6693 Рік тому

    The playdate should have a Bluetooth or WiFi connection, but unfortunately it doesn't.
    But your morse code technic is a really good idea. I heard that some radio stations would do something similar to transfer games and other cool programs

  • @griffinbrooks6748
    @griffinbrooks6748 2 роки тому +2

    Thats really cool! perhaps the app on your phone can have a level editor as well! or maybe at the beginning you can define a level width and any letter bigger then that will move down to the next column! even if you dont add those i think this will be a really cool game and i cannot wait to try it out.

    • @SquidGodDev
      @SquidGodDev  2 роки тому +2

      Ohh a phone level editor would be cool! Seems like a lot of work tho 😬 I did think about having multiple rows to have a full grid to make levels with, but my concern is right now the level data transfer is pretty slow, so that would multiply the amount of data that needs to be passed. Might change in the future though

    • @griffinbrooks6748
      @griffinbrooks6748 2 роки тому +1

      @@SquidGodDev yeah, either way this will be super cool!

  • @TS-by9pg
    @TS-by9pg Рік тому

    You should also try using pitch. It will help to transfer data more efficiently but I'm not sure how hard it is to implement on a limited hardware such as Playdate

  • @LolaliciousSmiley
    @LolaliciousSmiley 2 роки тому +1

    I can't stop laughing at how cool this is and how well it works. I didn't even know this thing had a microphone!! At first, I assumed you were using the included speaker.

    • @SquidGodDev
      @SquidGodDev  2 роки тому +1

      Yeah it's kinda random that it has a microphone 😅 no one really uses it

  • @ShadowDrakken
    @ShadowDrakken Рік тому

    I mean, you more or less just gave the PlayDate an actual modem :D That's pretty epic!

  • @ProSureString
    @ProSureString Рік тому +1

    You could totally make it from play date to playdate. It has a built in speaker does it not? A playdate Playdate!

    • @SquidGodDev
      @SquidGodDev  Рік тому +1

      For sure, but barely anyone has a Playdate so I imagined it'd be hard to find someone else who had a Playdate 😅

    • @ProSureString
      @ProSureString Рік тому

      @@SquidGodDev well I'd assume if they were using the game they would have a playdate, no?

  • @BlueOctopusDev
    @BlueOctopusDev 2 роки тому +2

    Wow, very impressive

  • @microdavid7098
    @microdavid7098 2 роки тому +2

    this is really impressive

  • @CubeOrSomething
    @CubeOrSomething 8 місяців тому

    you make amazing videos, keep doing what you enjoy

  • @shawnawesomeer5570
    @shawnawesomeer5570 Рік тому

    oh sweet ! it reminds me of how pocket operator data is transferred

  • @celinnec.valdez9995
    @celinnec.valdez9995 2 роки тому

    Pretty cool, really changed the way i look at the playdate

  • @Sp3ctralI
    @Sp3ctralI 2 роки тому

    Morse code is a crazy cool idea, it’s not used much anymore, so using it this way is a fun idea!

  • @y2commenter246
    @y2commenter246 2 роки тому +1

    Thanks for the link to that book!!

  • @cristianvelardez8657
    @cristianvelardez8657 2 роки тому

    In The setup yup that was my problem thanks a lot

  • @denischen8196
    @denischen8196 Рік тому

    How fast can you transfer data using sound?
    Can you transfer a level with hundreds or thousands of blocks in a few seconds without errors by encoding each block as a frequency, using start and end signals, redundancy and error correction?

    • @SquidGodDev
      @SquidGodDev  Рік тому

      Maybe? Not sure - I'm not smart enough to figure it out 😅

  • @KamranWali
    @KamranWali 2 роки тому

    Awesome video! Really like the creative way you solved this issue. Using sound to create level now that is unique and awesome. I will definitely give playdate a chance after my current project. Something about the display just brings back good old memories especially Tetris. Keep it up! :)

  • @thetexanshurtme
    @thetexanshurtme 2 роки тому +1

    This is very wow
    EMCG

  • @eboatwright_
    @eboatwright_ 2 роки тому +3

    This is so cool! You could also do this to make multiplayer games

    • @SquidGodDev
      @SquidGodDev  2 роки тому +1

      Oh interesting! Didn't think about that

    • @als_pals
      @als_pals 2 роки тому +1

      I have a game that currently needs handing back and forth to play, I might try adding actual multiplayer using this idea

    • @eboatwright_
      @eboatwright_ 2 роки тому +1

      @@als_pals Super cool! Let me know how it turns out!

    • @eboatwright_
      @eboatwright_ 2 роки тому +1

      @@SquidGodDev :D Like you could convert the player's position to binary, and send it using morse code to the other playdates

    • @pacomatic9833
      @pacomatic9833 2 роки тому

      @@eboatwright_ maybe but there cannot be real time

  • @xkernalsandersx
    @xkernalsandersx Рік тому

    This is so amazing - I really hope that we continue to see more people developing unique experiences for the playdate. Mine unfortunately is in group 5 and it looks like it's going to be a LOOOOONG time until I receive it, but I'm happy to see there will be more and more games to choose from once I jump in!

  • @TimConceivable
    @TimConceivable 2 роки тому

    whoa! this is a really cool!!! you weren't kidding about having a good idea for level sharing!

  • @Lukequest
    @Lukequest 10 місяців тому

    You deserve an award for writing a book

  • @puffcap_
    @puffcap_ Рік тому

    i love how analog this type of data transmission is, and its exactly what i would expect from playdate devs

  • @RazzleBloq
    @RazzleBloq Рік тому

    Bruh so cool also 100th comment

  • @UltimatePerfection
    @UltimatePerfection Рік тому

    Why not cut out the middle man and just beep out the code from playdate itself. The thing has sound, no? Also, if you go that route, wouldn't be the modem sounds a more efficient coding for the level data?

    • @SquidGodDev
      @SquidGodDev  Рік тому +1

      The idea was for you to be able to share it with other people over the internet, so you can send someone the link and they can play it from their phone, instead of having to physically be next to each other. And yeah there's lots of ways to make it more efficient - I just started off with a simple, naive approach.

    • @UltimatePerfection
      @UltimatePerfection Рік тому

      @@SquidGodDev Yeah, but it would be better to force people to actually meet each other to share the levels. You know, a little face to face.

  • @avery_IO
    @avery_IO 2 роки тому

    could totally use this to transfer a save file from one device to another.
    “bro u gotta play my character” or whatever. especially on games that are not linear or are procedurally generated.
    very cool.

  • @blastygamez
    @blastygamez Рік тому

    Creative and good solution 👍

  • @bubbleheadft
    @bubbleheadft 2 роки тому

    I wonder how much faster the data transfer could be if you used a frequecy shift type signal. Each character could be at the shortest practical signal duration but at a different pitch.

    • @SquidGodDev
      @SquidGodDev  2 роки тому

      Great point - I've thought about that, but there's no way in the Lua API to tell what the pitch is. However, there may be a way in the C API but I haven't checked it out yet. Planning on looking into it this week.

    • @bubbleheadft
      @bubbleheadft 2 роки тому

      @@SquidGodDev awesome! Just subbed to see what happens.

  • @AmRealityInc
    @AmRealityInc 2 роки тому

    you're a fucking genius

  • @richxps
    @richxps 2 роки тому +1

    Genius

    • @SquidGodDev
      @SquidGodDev  2 роки тому +1

      Glad you think so! Still a lot of ways to tweak it and make it more efficient!

  • @funmath3835
    @funmath3835 2 роки тому

    this guy is too intelligent.

  • @YoshimiGames
    @YoshimiGames 2 роки тому +1

    Crazy! 😄

    • @SquidGodDev
      @SquidGodDev  2 роки тому +2

      I was surprised it worked too!

  • @S3th__
    @S3th__ 2 роки тому +1

    niceeee

  • @thatsmaik
    @thatsmaik 2 роки тому

    Amazing and inspiring

  • @kadabra8
    @kadabra8 2 роки тому

    Оце ти заморочився)
    Чудово👌

  • @jusqueicitoutvabien
    @jusqueicitoutvabien 3 місяці тому

    Thats wild

  • @Combes_
    @Combes_ 2 роки тому +2

    Too impressive!

    • @SquidGodDev
      @SquidGodDev  2 роки тому +1

      Thanks!

    • @Combes_
      @Combes_ 2 роки тому +1

      @@SquidGodDev How do you think up of this stuff?

    • @SquidGodDev
      @SquidGodDev  2 роки тому +1

      @@Combes_ Well, using audio to pass data is not really a new concept, so I can't take credit for thinking up anything really 😅

    • @Combes_
      @Combes_ 2 роки тому +1

      @@SquidGodDev Well it's compatible with the *PLAYDATE*

  • @fredik21
    @fredik21 2 роки тому

    Це як geometry dash?)

    • @SquidGodDev
      @SquidGodDev  2 роки тому

      Not quite! In geometry dash you are constantly moving and you only control when you jump, but in my game you control how you move around.

  • @zepkup
    @zepkup 2 роки тому

    Ok

  • @kobsboy4227
    @kobsboy4227 Рік тому

    this is kind of like dial up. this is so cool

    • @SquidGodDev
      @SquidGodDev  Рік тому

      Never thought about it like that. Yeah pretty much

  • @zepkup
    @zepkup 2 роки тому

    Epic.