#Pebble Park: Online MMO (ALPHA TEST LIVE!)
1 messages · Page 2 of 1
aplite support when /hj
for a real answer: i’m already squeezing out every byte of the 64kB RAM that the watches have for this app, and even that’s a challenge. Aplite unfortunately only has 24kB of RAM, which isn’t enough space for the code, much less the runtime assets 😭
damnn
to get Pebblemon to run on Aplite I had to remove like 90% of the features 😵💫
oof yeah
I’ll be on a plane during the time I voted. We’ll get to see how optimized you are now for airplane WiFi
Holiday in the Park! This week! Pick a day (we’ll do time later)
4
12
2
Mon Dec 22
If anyone knows a better way to figure out what time to do this, let me know. I could do a when2meet or something 🤔
Round 2: time for the holiday meetup on Mon. Dec. 22
2
10
Ok let's aim for 2:00 PM EST on Monday Dec. 22
I know this time won't work for everyone, so if anyone else is interested we could do another either Friday or Saturday
Discord has a cool timestamp feature that can show relative time and also convert to the local timezones.
<t:1766430000:f>
<t:1766430000:R>
I’m on 🙂
I'm on my way!
MrPizzaBoy could you try reconnecting? 🤔
done
I am a lowly iOS user
I'm on some public wifi, captive portal thingie
I think the sync is pretty good on iOS all things considered. I can't see your walking animation but I do usually see every tick you move
oh i haven’t added walking animations for others yet 😎
OH! Then it's flawless
It'd probably make sense to make that all client side. Just start populating the "next position" of every user and just let them move on my watch even if they're behind by like 3 squares in reality
yeah that would def be the way to do it
Until you add the go kart racing mini game
ah there’s no disconnect/connection failure notification yet, so i’ve been relaunching the app every now and then to make sure I’m still on
Mine has 3 bars does that not mean I'm super online
or does that mean the opposite and i'm super not online
I'm waiting for my pebble time to do a firmware update 😬
It means low latency! but uh i haven’t put a disconnected check in on the watch side, just the pkjs
so those bars will get stale and lie if you get disconnected
oooo. that's what I think I am noticing. I can tell I'm "offline" because they stop bouncing around
i’m making notes of all of these bugs/missing features ✍️
i just unlocked my phone to like 5 "Pebble Core Crashed" notifications
uh oh, i’d say submit a bug report
I'm in
Do new users automatically get a friend request from you, or are you just that fast?
yeah i set it up for automatic 😆
A real MySpace Tom
Can I change my name?
not yet, i’m debating if/how to do it
You gotta charge us $5 per name change
come join me in the meadow 👀 (top left)
The iOS Core App definitely still has a rough time still but it even working given the limitations at this point is crazy
I've had the app crash for less though so who knows why exactly
Oh look at the colors
I'm about to board a plane so I'm gonna hop off. I'm hyped for this. This is such good work already
i gotta figure out a good way to show that it’s an option 🤔
If there's no nametag, are they an NPC?
it’ll only show when you can interact with someone, which is off of the main roads
the idea is that the main square and stuff might be too crowded for like 20 nameplates on screen
I was imagining it was the RuneScape Wilderness rules
ohh i’ll look into those
Do you mind if I post about this on bluesky with some screenshots?
go ahead!
Do you have a bluesky account?
no only twitter unfortunately
btw where in the world is everyone playing from? i’m in the eastern US
i think the server is located in boston?
I'm in the UK
eastern europe
Feature idea: A step counter and a step count leaderboard
This is so well done
Is the map embedded in the pbw or serverside? I presume the former
pbw, would be interesting to make it server side 🤔
whoops my watch died, maybe I should’ve brought something other than my ptr to work 😅
Thank you, and thank you to everyone for joining in!! 😄
I like the idea. Make it also work on OG Classics like the Steel too
Looked fun. Excited to try again soon
Pebble Park: Online MMO (ALPHA TEST LIVE!)
Other players have walking animations now!
Yeesh just including dictation takes up almost 4kB of memory 😬 And that's not including any code or other variable overhead to support it
Would it be possible to unload the map, do dictation and transmitting, then load the map again? As a workaround for the limitation
Aw man I tried this a while back. it took me a while to learn why it wasn’t working: memory fragmentation. Essentially when the heap is empty there’s plenty of space for an 8kB map. once the map is freed, the next code runs, and then frees up the memory. Even though there’s, say, 11kB free now, there’s no longer a single 8kB of larger chunk available to malloc (it could be, e.g. a 6kB and 5kB chunk instead)
I do have some ideas for being smarter about map loading, i.e. chunk rendering (which could cut that 8kB at least in half). It’s complicated though so it’ll take a few days to implement
That and I’ve been aggressively cutting back everywhere I can in terms of code size, which has diminishing returns
Are you just doing row loading right now as the player moves in a certain direction?
Oh or are you just loading the entire map at once
Yeah the whole map buffer is 8kB. the actual rendering space within the graphics engine is only 1kB (by design), so I do tile-based row loading from the whole map buffer into the graphics buffer.
I’ve only vaguely vetted this and it’s C#, but I wonder if this project is any help to get ideas for chunk processing. Specifically in the Engine folder
Chunk*.cs, Configuration.cs, Tileset.cs
Nice if my current implementation plan fails I’ll see what I can glean from that project
I don’t think it’s anything fancier than arena allocators and then loading the chunked up tile set into those spaces
So maybe just the way the map got chunked might be interesting in Engine/Maps more than the actual code
Luckily with C someone figured out how everything works 50 years ago and you just have to pull the scraps together across the internet to relearn it
Somehow one day your project will only use 1 byte of data at a time due to dynamic streaming and you’ll be half way to C memory management perfection
Hehe I came up with a chunk loading system and with the code overhead I've squeezed out another 4.5kB. I did it at a sweet spot of minimizing the number of storage resource fetches (since each fetch is a significant amount of time and lags the game) while still getting a significant memory gain
It doesn't change how the game plays, but I can finally move past optimization for now (until i add another 6kB of code and have to reoptimize 💀 )
aw geez, it turns out that dictation has a memory leak, so now I’ve got to include even more overhead for that 😔
every 25 dictation requests is going to cost 900 bytes of unreclaimable memory, so if someone wants to do a lot of messaging in one session it may crash the app
I’m frustrated that I’ve been so diligent in avoiding leaks and now there’s one in a critical feature that I have no control over
but i guess a lot of this project has been working around difficult limitations/shortcomings of systems that are out of my control 🤷♀️ (vent over)
You need to take a couple days for rest 🤗
Technically, you could fix it in the firmware
so it's at least fixed for people on core watches
You're doing awesome work. Give yourself a break! It's probably also hard being "done" but maybe there's a finish line?
wow - did you let the firmware team know?
Yeah the only thing to add is messaging. I think it's critical otherwise there's no reason to come back after trying it for the first time 🤔 and of course making sure the game actually works with more than 5 ppl
Hmm i'm curious if it's an sdk thing? I'm going to dig into it later
Are you trying to reuse the sessions or are you destroying it after each single use?
i’ve done both to see if that did anything. terminating the dictation process before it displays the transcribed result doesn’t have a leak, so that’s a lead.
ok you know what fixing the firmware is beyond the scope of this project, if it breaks, it breaks 🤷♂️
0.5.0a - Custom Usernames
You can now set a custom username! I did a database reset, so you'll get to choose your username when you log in.
awesome!
Bit of a jank video, and I forgot how the alphabet worked for a second
Also there’s a profanity filter in there, hopefully it’s sufficient, i’ll probably still add a report option tho for bad actors who get around it
Looks great so far! Very nice to finally be able to use our own usernames instead of the random ones it gives you
omg i forgot to include in the 0.5.0a patch notes that other users have walking animations
I can manually edit patch notes if you send me the new text
Oh! Thanks! It's just one additional line
Only 2 people since the 0.5.0a update, probably just 6 or 7 in total so far? I definitely want to have some good metrics to track before the beta, do you have any recommendations?
I am currently being perplexed how you were able to make this app now with the memory constraints. Are your sprite sheets pretty small overall since it's just walking animations at the moment?
I really want to see the magic you did to get this running now because I'm just trying to load up a fairly static set of sprites to animate on a watch face and I can't run this on anything lower than Emery due to app size.
hehe good question, the short answer is that I wrote an entire graphics engine a while back: https://github.com/HarrisonAllen/pebble-gbc-graphics
This is the repository for the GBC Graphics engine for the Pebble smartwatch - HarrisonAllen/pebble-gbc-graphics
I’ve heavily modified the v1.5.1 release of the engine for this project, though. Happy to go through it with you if you’re interested! Lmk if you have a project thread or anything
I don't suppose it allows per-line modification of attributes, does it?
Why yes, it does indeed https://github.com/HarrisonAllen/pebble-gbc-graphics?tab=readme-ov-file#stat
Oooooooooooooo
Random Q: does anyone have any strong opinions on the initial username screen being blank or having a prefilled random username (like it does now)?
Prefilled random is probably fine. It doesn’t hurt anyone that wants to set their own and makes it easier for anyone that doesn’t
Uhhh ok the latest iOS update has killed the old pebble app, if I cannot get it to work again then I may be 50% screwed until core gets ios websockets working
i am trying this right now. I really wondered how the controls would even work but they actually work pretty well. It's a fun idea.
A bit quiet right now! haha
dang i’d join if the pebble app was working, thanks for trying it out even though it’s empty
I’m looking to add support for using the accelerometer to scroll list and scrollable view. The way your Tilt Controls works is really good so I’m curious if you’d have any secret sauce you used or if it was a pretty straight forward implementation of the API (can move out of this thread too, just relevant because it’s good in this app)
I’ll try and rip out the relevant parts of the code and put it in a public repo for you to take a look at
I started this repo for any snippets I want to pull out of the private repo to share: https://github.com/HarrisonAllen/pebbleland-snippets
@novel vapor I slapped together this tilt example hastily, hopefully it'll give you something to go off of. Let me know if you have any questions! https://github.com/HarrisonAllen/pebbleland-snippets/blob/main/tilt.c
Damn. I'm officially locked into the new Core Devices Pebble app on iOS, no turning back now. I'll have to deal with all of the bugs/crashes (and try to figure out if it's my app or the core app), plus the whole no-websockets deal. This sucks.
I'm grateful that @novel vapor requested getting it working on this coreapp/ios combo because otherwise I would be much much sadder right now 🙂
hmm, no eta for ios websockets, so for the foreseeable future i’m going to assume that they’ll never happen and design around that https://forum.repebble.com/t/websockets-for-ios-eta/168
Hey everyone! I’m grateful for all of the hard work that’s gone into making the new Pebble app, it’s great so far! 😃 I did wonder if there’s a timeline for iOS websocket integration. I’ve almost completed an online multiplayer game for the Pebble, which primarily uses websockets. I have a REST API workaround for iOS at the moment b...
I think that’s the correct assumption to make.
Are you just doing long polling right now /+ Are you wrapping that in the WebSocket API or just as a standalone hack in the meantime
For rest i send the same binary packet just through a post request (then I catch that on the server and push it through the same data parsing as WS)
The big difference is rest polls every second vs in WS the server pushes every half second
So are you sending GET (or POST depending) requests to your server every second and if it has nothing to say you just do it again?
If yes, any reason to not just open a request and then wait until the server has something to say. It’d be more work on the server to hold onto that request, but then if 5 clients have open requests, you can respond to them all at the same time
E.g. player 1-5 have an open request and player 6 moves, you just respond to all 5 of those open requests with that then the clients just re-open requests
I’m simplifying what your server is doing a lot here in my head so it’s just guessing
I guess you’d have to keep like a rolling 5 second log of everything that has happened to be able to inform a client what has happened since the last time their request was resolved though
Huh, never realized that holding a request like that was possible, so essentially the user would make a fetch request (rising edge), then the server would hold that request until the next tick, at which point it pops the queue and sends a response (falling edge)?
I do indeed have a queue for all of the things that happen between ticks
Yeah. It’s commonly called HTTP Long Polling
On today's Internet, the Hypertext Transfer Protocol (HTTP) is often used (some would say abused) to enable asynchronous, "server- initiated" communication from a server to a client as well as communication from a client to a server. This document describes known issues and best practices related to such "bidirectional HTTP" applications, focusi...
You’d end up with two streams. One is your POSTs to inform the server of client changes and keepalive notifications if the user is doing nothing
One is your GET which is the long polling request that is resolved by the server when it has something to say. Once it’s resolved the client re-opens it right away. You could probably open X number of GET requests to avoid downtime between the server and client as much as you care
If nothing is happening, like I’m standing alone in the server, I’d expect that a GET would just stay open indefinitely (or you resolve it every X seconds of idle to let the client know the server still exists) and periodic keepalive POSTs to tell the server the client is still there but idle
You could probably group up your open requests and resolve them as a big chunk every time and then just keep doing that with your rolling log of events
The client can send a new GET with a header indicating the last time it had a resolved request so there’s server knows which updates to send along from the rolling log (you might already do this)
If you wrap this behind the WebSocket API, on the client you can pretend everything is fine
Wow this is awesome information, thank you so much for sharing it with me!
There’s a lot of dead links there but I think what I described is an oversimplification of the Bayeux protocol
The way I’ve got it, I already have a keepalive/send updates separate from the fetch, plus the way i queue data and send down in websockets on server ticks will translate nicely to a long poll
And that’s as far as my brain goes right now
Ooo i’ll read that when i get home from work 👀
I found Faye, that seems to try to handle this both server and client side
https://faye.jcoglan.com/browser.html
if it helps anything. It has both WebSocket and Long Polling transports supported so you’d land with the same API either way you end up going (not necessarily to use this library but to observe the API to see how it could be laid out)
Wow with long polling, the iOS app can match pace with the server tick rate finally 🥳 It was a quick implementation, so expect it in the 0.6.0a release!
That’s good! For heavy traffic it probably won’t be a lot less heavy than constantly pinging but it’d hopefully be a bit more optimized to only need to do the client<>server negotiation actually when it is needed and at the actual points in time it’s needed rather than randomly every 1s
Long polling shows more benefits in things like the Claude app or Bobby for example where you can publish an event (LLM request) and then subscribe to the result if that event that could take some long amount of time.
thank you for sharing your knowledge!
I’m taking canned message requests! I’ve got basics like “Hi!”, “Bye!”, “Let’s meet!”. wanted to see if you guys had any fun ideas
What about something like "let's go to " for the different zones?
Oh, and a way to compliment each others appearances
(I’m using tilt controls)
dangit I was gonna suggest that!
I'm using the Wii Wheel!
This is awesome!!!!
Hmm. The only trouble with this is that I don't think you can go from the store url to opened in the core app just yet. I think core app gets upset or something
it wouldnt be coreapp if there wasnt random arbitrary basic stuff that didnt work 😭
I have messaging working, with canned messages!!! But there's one major, major issue: there's not enough space for all of these menus on the older watches (which is why this is an emulator time 2 recording...)
So the gist is that I will need to spend a long while figuring out how to optimize out like... 2kB of code? idk how much exactly, and it may be more... But! Everything else for it is in place
I also will say this means that dictated messages aren't going to fit into Pebble Park, so Pebble Parlor will really be where custom messaging will happen
Anyways here are all of the current messages I've got set up:
I think the separate apps is the smart way to go so you don’t have to conflate functionality across apps since you just won’t be able to do it.
(Apps being able to launch other apps would be really neat if both just registered each other’s UUIDs to do so)
I’m gonna tell ya now. I know people. You can cut the size down a lot by just having tilt controls as a message.
(Maybe for smaller watches if you can’t optimize away 2K you can simplify the menu structure and provide only a subset of messages? Or selectable via Clay?)
I'm using tilt controls!
If you see me use any other message in Pebble Park, I was hacked
real and true
if you see me on pebble park anytime before late february i am being impersonated
0.6.0a Messaging
- You can now message other users!
- The iOS connection has been improved
Lol midnight release before I sleep, I did a database reset so everyone will need to make usernames again
Let me know if you have any new message ideas! I set it up so that I can add in a ton of canned messages without running out of memory, so I'm all ears!
also lmk if you get crashes, etc.
For the beta release I'll use the hidden dev portal feature 👀
Gangs all here
- Not a single iOS crash just wandering around
- Maybe an option to force the backlight to stay on would be nice. I think thats something you can do because I believe Pebbletris Redux does
Wow wait did you get the server latency on the Core iOS app down to the same as the other clients? It really “just worked”?
Sure I can add a toggle for backlight always on in the settings!
Yeah I just had to do a bit of logic change on the server side to hold the response object until the next server tick and on the app side make the requests happen asap. that’s it!
How much space do you think you have. Is Pebble Park’s map size maxed out or is it just the size it is for demonstration purposes.
Fundamentally it can be larger, thanks to chunk loading I could increase the map size indefinitely with no ram impact, only restricted by resource storage (which i’ve got a lot left)
It’s this size because i felt like 5x5 screens was large enough for Park specifically, but it can be larger (or have multiple kinds of maps) for other apps
v0.6.1a Backlight
- Adds option to keep backlight on
pumped to check this out
I'm adding a username confirmation in the next version, accidentally went too far before finishing a new name 🥲
Pushing the limits and further optimizing (primarily for space), here’s 16 NPC players (from the server) rendered at once
Performance suffers a bit, but is it better to have perfect frame rate or as many players as possible on screen?
There are other high-volume concerns to address (e.g. appmessage bottlenecks), but for now i’m starting with straight up rendering limits
@verbal hinge Are you familiar with Panic Playdate console??Maybe you should check it out on https://share.google/rplLCumxO1mjZ9tRP
Pebble Park definitely reminds me of a lot of the Pulp games on the PlayDate like “Resonant Tale”. https://play.date/games/resonant-tale/
It was very much inspired by Link’s Awakening.
The Playdate is a super cool piece of tech! If I carried one around as much as a Pebble then I’d definitely be developing for it
@verbal hinge well said👍
Nameplate aura may help with some of the clutter 🤔
It won't help with clustered folks but still nice in general i think
I'm just waiting for you to implement the pebble-paper-scissors global leaderboard!
2,025 players (NPCs) on the server at once (plus me so 2,026 total)
- Server sends down all player information.
- phone keeps track of all of the players
- phone filters out the 15 closest players and tells the watch to render those
15 other players on screen is kinda the limit of how far I'm willing to sacrifice frame rate, at around 20 it's nearing the memory limit for the watch
If you’re zoomed in does it adjust to be less than 15 closest?
(Also this is huge and I’ve no notes. This is really good work on performance)
(Maybe one note is to de-dupe players standing on the same square based on the last one that stood there but that’s it)
Hmm it doesn’t adjust, i have a logic check to not render players that are off screen in the C code, but I don’t account for the zoom level. i should and could
You should give your life over to RuneScape to get performance ideas
haha you read my mind, that’s what i’m working on now
2,025 NPCs crammed into the main square
now make them move
Realistically every day is just a step toward Link realizing they actually COULD port Final Fantasy 1 to the Pebble. Then it’s a waiting game for me.
I'll for sure be playing some type of Links Awakening on my Pebble some day... I just know it
Once they realize they can that burden of knowledge will drive them forward
v0.7.0a - The Alpha Finale
This is the final major update for the Pebble Park Alpha! Thanks for joining in and giving me advice, knowledge, and feedback early on, I couldn't have gotten this far this without all of your support... and it's not over yet!
(there are only 16 npcs on the server now, so not as crowded as this recording)
that's killer
I’ll note I haven’t had a crash of the connection between phone and watch since the release that included long polling
ideally i was hoping to do the beta test including the PT2 to, you know, beta test on new hardware. i could still do it, i guess but:
the final release should come after PT2s have started arriving. otherwise people will say “oh wow that’s cool i can’t wait to try it when my watch gets here!” and then forget in however many weeks
tradeoff is that i have a bit more time to do things:
- i think that message notifications are critical. personally i’d forget to go back and check the app!
- painfully there’s no timeline server, so i’ll have to do a wakeup event -> poll -> push notification sort of deal
- and not use up too much code space…
- it would give me time to work on a second app to be part of the Pebble Land ecosystem, probably bombleman
who knows, maybe in these 6+ weeks core will come out with a timeline server alternative and apps-launch-other apps and websockets! (haha…)
I sold my P2D for a reason
figured I'd rock the old hardware that works till the new hardware starts working
no shade on the Core team; they're doing what they gotta do
but yeah, not holding my breath till its running at full steam
yeah bro lets get that bombleman going xD
Hmm… all of these talks of discord servers reminds me that it might be worth setting up an external discord server for the Pebble Land ecosystem so that people can match up e.g. for playing games together, know about updates, provide feedback… 🤔
Isn't that what this channel is for? It seems to work well enough, no?
For the 5 person Pebble Park alpha, sure. Park is pretty self contained anyways. But for other apps like Bombleman, how is someone going to organize a lobby to play with 3 other people online? What about the other apps that will come out in the Pebble Land ecosystem?
I’m absolutely open to ideas, I think I might need to expand beyond this one thread in some way
If these get so big that discussion breaks out of the Rebble Developer Community (this), forum.pebblepark.com doesn’t sound awful. But as it is now, probably utilizing the existing community spaces (forum.*ebbl.*, the subreddit (?)) probably makes getting initial engagement more streamlined.
Staying in the preexisting communities is wise, even though they’re limiting in their formats
I think I’ll try to make a static landing page that looks kinda like this, accessible via a QR code in the app
Just tried this out. Nice app! Never expected an mmo
right??
Y’all got me thinking and I could def do something like this to compose longer messages
(i like how you use hatching to show a highlight, it looks neat)
wow i feel like this is a huge improvement to the messaging system
That's awesome
Oh that’s so nice! I bet you could handle localization nice now too since it’s still nearly full sentences rather than having to construct sentence structure.
The logic just needs to know the that User A sent the message containing the key greetings_1 and it could show up in English even if it originated as another language
I love how this project is taking shape.
Have you thought about creating something like RetroAchievements or PlayDate Achievements for the mini-games? Perhaps with a library so that other developers can integrate it into their own games built for Pebble, which can then make use of Pebble Park's social network. This way user's could have a way of competing with their friends in games that are not necessarily multiplayer. Imagine having a leaderboard for a game like PixelMiner. e.g. Who has mined the furthest amongst your Pebble Park friends? There could be a friends-only leaderboard and a global leaderboard.
Uh oh I already designed the messaging system to work in full strings, in anticipation of dictation 🫣
Also... i uh kinda forgot about localization...
That's a super interesting idea. I'll think on it, and maybe other ways I could expose the API for other apps to use.
Omg we could build it in to RWS
👀
Like they do it in Among Us 
Yeah with dictation I dunno what you’d do for translating messages which I think the answer for any long term is you wouldn’t.
https://developer.rebble.io/guides/tools-and-resources/internationalization/
Handling strings feels fairly simple with this but I’ve never done it this way. I don’t know if this causes your app to have all of the languages embedded on the watch binary but it reads like it does.
If that causes too much of an app size bloat for certain platforms, you could just have the watch hold the keys for all strings. Then at startup it can just ask the phone for a language to be provided. I do this fairly poorly in Kagi News because there are like 100 categories available and I don’t want to store all those strings on the watch when only like 6 are to be used at once
another random idea I had for communication was: separate app
friends app
and then people can become friends and can play different games but all the communication and friend stuff can be done in that standalone app
Pebble Park is the mmo
but go over to bomberman and play there too
all the while if you want to chat, just open friends app
you can manage the friend there and other friends
and in each app in the borders you could see some indicators notifying you of a message, friend request, etc.
that way the apps are still social but you don't have to bloat each app with communication
in friends app you can customize your avatar, set status message, hold an item, etc.
I realize this is basically like hacking apart all your apps
to stitch them back together
lol
Yesss that’s the vision! (Also why I’ve requested from core some way to launch an app from another app)
The two I didn’t consider are were (1) including message, etc. indicators in other apps and (2) an independent friends app 🤔
Hmm not impossible and might not bloat an app too much… I’d have to figure out correct translations for things though 🤔
Could also do server side translations, store messages in english and translate when sent down
always a step ahead of me haha
Yeah this is sort of what I meant but just doing it from the local PKJS Companion app instead of the server so the server isn’t concerned about strings as much. Unless you put the messaging feature in all of the apps then it’d be unified by the server.
Storing all of the languages on the watch doesn’t seem necessary for something that needs a connection through a companion app anyway in order to function
good to think about, i really appreciate you bringing it up!
Am I off base on this solution? This is a horrible diagram missing some steps but I think it’s reasonably possible with a very light weight notification web app that can install to a users phone. notification.pebblepark.com
Pebble Park can have a section to generate a short lived token on the server for me to provide to the notification web app. When I do, now the server knows that when User A sends User B a message, it should push that message to User B’s notification app.
It’s an app on my phone, so my Pebble will display the notification.
The notification app doesn’t actually have to do anything but take the token to validate the user, receive the messages from the server, and push out notifications to the device it is installed on about them. It can just be a web app so no App/Play store needed
(You have to manage sessions from the notification app now but you could treat it the same as any other front end you have, it’s just linked back to some related account, as of now, Pebble Park)
This same system of one time tokens could be used to connect users between different Pebble apps, unless you’re already able to do that by inferring something about their pebble they have. But I could create a one time token in Pebble Park and enter it into the set up of Bombleman and both apps will know it’s probably me. This isn’t high security but it isn’t nothing.
(If there is no actual auth occurring internally before this though this is basically nothing because otherwise you’re trusting the client)
That's definitely a good idea for a workaround. I thought about it for a bit, and I've got the following conclusions:
- An external phone app is the only way to get notifications to the watch without wakeups at this time. They won't be timeline pins so I can't launch the watchapps from the notifications, can't do much about that
- Building a single webapp is much more approachable (at least it should be) than building both an iOS and Android app
- My hope was for the user experience to be entirely contained in each of the watch apps, but unfortunately that's not a possibility given the current state of Core's web infrastructure. I need to move on from that mindset
- Bonus benefits of notifications being handled externally:
- If the watchapp is uninstalled or the watch is off, users can still get notifications!
- I don't have to reimplement a notification handler on every watchapp
- Also... it will get the ball running on your desire for a social hub app lol
Oh and I should probably explain some of the server structure
There's an overarching Pebble Land server that handles authentication, user info, and friends.
Pebble Park uses it for registering, logging in, user info. Then Pebble Park has its own server for handling game logic, messages (although maybe I could pull that out into the Pebble Land server)
Bombleman will use Pebble Land for logging in, getting friends. Then use its own server for matchmaking, game logic.
Here's the park authentication process for reference
And then slotting in some UI with your webapp solution:
if, for some reason, Core ends up adding a timeline alternative all i have to do is change the endpoint of the server when it sends notifications down
yippee https://pebble-land.com/
(this is the most barebones test docker setup webpage of all time)
can this game just be a watch version of the gameplay from PSO?
Phantasy Star Online? Not this one, but maybe another app...
RIP Pebble Land (docker down 😢)
Also get your legal team ready smh /s
(Maybe not /s I don’t know the conditions around which you can call this Pebble Land or Pebble Park on the platform itself. I’m fairly certain that was not allowed in the past but I dunno if anything changed since Pebble no longer exists and Core holds the trademark. I assume you can’t still)
oh... well that's good to know, worst case I rebrand and buy a different domain
i'm actively breaking the webpage as we speak 😎 (I accidentally rate limited lets encrypt so uhhhh)
Technically things like Pebbtris also weren’t allowed but the only doc that I see referencing appropriate trademark use also references a getpebble.com email which certainly means it was just pulled over from the Pebble days anyway.
wow that's more strict than I thought, but it makes sense! Maybe things are a bit more lax these days
v0.8.0a
- Biggest change for the app: messages can be longer and more complex!
(Note: pbw removed, see pins for hotfixed 0.8.0a pbw)
A couple new issues have arisen:
- The iOS websockets in the Core app are... there? But aren't really working. So unfortunately everyone gets Long Polling for now since I can't distinguish between working/non-working websockets anymore.
- There's some weird bug with the core app where app messages get queued or something, and when I exit and relaunch the watch app all of those queued app messages get sent out immediately to the phone, so I put in an initial login delay which is a bit confusing for the user
Blessed Long Polling 🙏 it never fails you
This undertaking finally got me to fully split the Land and Park servers as shown in the diagram from a while back. That combined with learning how to do a reverse proxy means that I can have a front end webpage (https://pebble-land.com) with SSL that can access the two servers! And it sets up better for Bombleman (and more!) to interface with the core Land server.
I don’t think that’s a bug. I think by design app messages are queued now until PKJS start up. Is that what you are seeing?
I'm getting messages from the previous session, for example:
- Watch sends "Disconnect" app message
- Watch closes app right after, but app message still gets to PKJS
- -- time passes --
- I relaunch the app
- Immediately I receive an app message from the watch to PKJS that says "Disconnect"
1.0.10.8. If I’m interpreting that right
it's definitely related to that fix, but may have introduced this other issue
I'll get like 20 app messages from the previous session sometimes, which is super annoying
A less sane person would send a session ID as part of the app message and drop any that aren’t associated with the current session
- Watch app starts. Generates a random session ID
- Sends session ID to phone
- Phone stores session ID
- Phone includes session ID on every message it sends
- Watch checks session ID and if it mismatches you know it is in a queue from a previous session and the app is playing a prank
But the app can’t keep getting away with making you do these things
I cant log in 🙃
App 1.0.11.10
Firmware 4.9.127
Pebble 2 Duo
iOS
I waited like 10 just now just to be sure
hmm hmm ok let me see what's up
Deleted. Reinstalled. Opened automatically. Closed. Reopened. Waited a bit. Pressed select. No log in either.
Just so I know the flow.
0.7.0 doesn’t work anymore either but I expect it wouldn’t since you removed the WebSocket support for iOS from the server presumably
0.7.0 wouldn't work because I added app authentication in addition to player auth on the server
Does it get to the username selection screen?
No it just sits here
The last option I can think of (before I sleep) would be to try: (1) close the watchapp (2) force close the Pebble app (3) launch the pebble app (4) launch the watchapp
if that doesn't do it I'll try to get the same setup going in the morning (I don't have my P2D connected to my iphone)
Did that to no avail just now. I rolled back to my app version 10.0.10.6, right before that app message buffer change just to see if that was it and no fix either (but doing so did resolve a crash I was seeing in my app, so neat)
At the very least I know you're hitting the server because I can see the 0.7.0a attempts lol, I'll try to recreate tomorrow. If you're willing, any logs you could capture from the watch (from dev connection maybe, there are a few debug statements still in there) would be super helpful. It doesn't need to be formatted nicely or anything
Thanks for helping me figure out what's going on!
Sounds good. Tomorrow after work or during lunch or something I’ll try to get you some logs
v0.8.0a hotfix
- Rebuilt with older SDK version
@novel vapor Try this one out
I switched back to SDK (4.9.77) and it's working as expected. I... think there's something incompatible with the latest SDK (4.9.127) and the latest P2D firmware (4.9.125). I ran into some strange issues:
- The not being able to log in issue
- When I tried adding logs, I couldn't even launch the app anymore (the watch would just freeze)
- Actually every subsequent build with the new SDK had that issue
- But no issue on legacy watches!
-# Websockets not implemented (correctly) on iOS -> use long polling instead, no timeline server for push notifications -> create an entire webapp instead, app messages can come from anywhere -> keep a session id like a less sane person
I’m in 😎
In just a few months I expect to see you porting the Unity Engine to the watch
Why start small? Unreal Engine 5 AAA games coming soon to a watch near you!
-# jk jk
ugh all the stuff i worked on today is boring
duh i wasn’t using fw 4.9.127 because it wasn’t public yet, that’s my bad
I actually ended up kinda doing this
- PKJS sends sync message with current time
- Watch echoes back a sync message with that time
- PKJS ignores all app messages until the correct sync message is received
- PKJS sends back a ready message
… which is still a workaround for a core app bug
Speaking of core app bugs, the reason why websockets only sort of work on iOS is because whatever backend the app uses ends up converting binary data (e.g. Uint8Array) to strings!! So if I send a uint8 array of [1] then it gets converted to ”1” which is [49] instead. the websocket auth and close messages are sent over stringified json (which works fine) and led to my confusion
So given this are we all going back into the hellish clutches of WebSockets again or is it still blocked by something?
Websockets are blocked until that bug is fixed. For a more complete example, a 4 byte array [1,133,128,3] becomes a string "1,133,128,3" which is an 11 byte array: [49,44,49,51,51,44,49,50,56,44,51] (44 is an ascii comma, for reference). I can technically parse that, but should I keep compromising with workarounds for (hopefully) temporary bugs?
Also there's a firmware(?) or sdk(?) bug with ScrollLayers where the width/height are stored as 1 byte or something so anything larger than 255 wraps around and breaks it (aka crashes the app). With Gabbro being 260x260...
And uhhhh I may have some similar breaking issues with my graphics engine since all of my coordinates are also 1 byte whoops
fortunately i think i've got enough workarounds for everything at this point that I can get back to developing the fun stuff
Ok well unfortunately I'm stubborn and will keep making workarounds 😤 Websockets are back on the menu, and the way I implemented it I shouldn't have to change anything once the coreapp bug gets fixed. Expect them in 0.8.1 (or 0.9.0 depending on how bloated this update is)
v0.9.0a - Gabbro! Websockets!
- Adds support for Gabbro
- Websockets now fully work for all phones and watches!
- Adds workarounds for some sdk/firmware/core app bugs
- Fixes some of my own bugs
(NPC_0004 and NPC_0002 weren't invited to the group picture but I let them hang out anyways)
inb4 0.9.1 - Long Polling Returns
I think I see what you’re going for with the chat and the menu layer on the bottom. But I think you need some sort of separation between the upper text area and the menu on the bottom
(I logged in and am finally testing stuff)
Any feedback like that you've got is super helpful 👀
When it’s not in motion I think it is okay but when it scrolls it looks unintentional
If you could make the menu layer taller so you can see there is more up and down it’d be good too but I know there is a height limit you’re dealing with for entering text. I don’t think anyone will enter messages that long though
I should be able to make it a bit taller, I'll figure out what the tallest a message could be. And throw in a line between the two or something
No disconnects though
I don’t think I saw any lag either while you were walking around
Nice, that's good to hear
I am very late to the game, but I was perusing the rebble channels and found this. OMG! So cool! Just a spot for fellow rebblers to hang. What a sick project!
So uhh...can i connect my xbox controller for this 😆
If you ever figure out a way, let me know 👀 🎮
wouldn't be impossible with a companion app!
haha. The idea materialized, but you'd need a companion app. Could capture game controller inputs. I am not suggesting you do this! LOL! Just what was swishing around my brain.
you beat me too it ! haha
uh oh, i don’t even know it was possible! I’m writing this down for later…
are the charaters I'm seeing rn NPCs?
Yeah, i can log on though
nono it's ok! lol
just about to bring my son to the school bus. 🙂
I'm going to mount my pebble to my other watch band so i can have pebble land as a hud for my day
nice! I see you running laps around me 😛
this is pretty cool.
gotta re-3d print my watch band brackets, my prototype broke.
woah I don’t know that I’ve seen those
I could feed you track info from songs playing and it could show what people are listening to 😆
I'll throttle my ideas I don't want to overwhelm you haha
and when you're close to someone listening to music you can select to dance ! ok for real stopping now. going to bus! 🙂
Actually though I am considering opening up an API for other apps to access user info like that: friends, what they’re up to, etc. A Music Boss integration would be 🔥!!!
I'll let you set the pace. If you do want to work on something let me know. Are you using Pebblekit JS? I am not sure if your app can receive data from both pebblekit JS and pebblekit android at the same time.
they added support for that i think
I’ll keep you posted! And yes it’s a PKJS backend
Taller and separated ✅
Oh I just bothered to read the mobileapp repo README and saw this there
Maybe ||senpai|| won’t notice you
Core Park
Peeble Park 🤔
bepple park
"I paid for the whole [screen] I'm gonna use the whole [screen]"
Realized that with the chunk loading system I could make the screens larger finally, I just need to expand the edges of the map
I'm curious if I can also increase the max # of players on screen on emery/gabbro since there's more memory and cpu speed available. I won't know how badly performance is impacted until I've got hardware to try it on
Oooo on Gabbro you could load all the way to the edges too since there is no HUD There. Big big screen
there's an argument to be made that pebble park was using the name before core was /lighthearted
b i g b i g s c r e e n
Fun fact: the Game Boy Advance was only 240x160, the above Gabbro screenshot is using 240x224!
(240x240 is the most realistic limit for this graphics library without rewriting it)
Here's an example of the GBA screen dimensions compared to Gabbro
me imagining myself fighting Kefka on my Pebble Round 2 right now
Rebble Park 
To accomodate the much larger watches, I needed to double the area of the world map. Mostly just adding on to the edges of the map.
An added bonus of the larger watches is that they have enough ram to hold all of the map in memory, no need for random stuttering through chunk loading
You approach the fence and try to open a gate.
You receive a notification to purchase Pebble Park Gold.
RuneScape terrors come flooding back
That’s a lot of water for boats though
Well, one of the recent core app updates broke or secretly removed the user account token provided in PKJS. This means that Pebble Park is completely unusable unless either (a) they fix it or (b) I come up with a brand new user identification system 🙃
I don't know if it has to do with it, but some sort of Rebble auth stuff is currently occurring
#web-services message
Since Core is making some sort of auth changes, maybe it's all related and will one-day-soon-fix-it
That wouldn't affect anything 🙂
I'm just adding some user management API stuff
Oh I just didn't know if maybe you knew something related to why that changed in the app and were trying to get ready / fix things. darn
Yeah, this sound like something only fixable in the app :/
I actually noticed it yesterday or the day before, so something core side for sure
Pebble Park will definitely be a testground for micropebble
"you probably should have a separate auth system that isn't based on the app's ID system" has just been sitting in my message box for a second. Deciding if I want to send you spiraling
Tbf the app should not change these things on a whim
I agree but if I were to move from the Core App to MicroPebble, unless the identification system results in the same values the account is tied to the app, not the user
(If both should result in the same ID though then yeah the app probably shouldn't change this)
Time to work on the umpteenth workaround for this, I guess 😐
Man, the account token was the only thing that was persistent across watchapps, watch hardware, and phones. Now I not only have to figure out a system for single app user identification, but also how to bridge across other apps (e.g. Pebble Park <-> Bombleman accounts) and other watches for the same user
Also missing features is one thing, but silently removing features (whether by bug or intention) is not cool
It might be worth just raising it as an issue if you really want to rely on it before jumping deep into auth
Otherwise I await pebble-land.auth0.com
i did raise a bug report, and I'm grateful that they're relatively quick to address bugs if they're not too difficult. They had an app release that fixed binary websocket data out within a couple days
well.......
You know what, spiral me
I'm actually almost entirely out of the pebble-specific ecosystem at this point, especially since I'm not using the timeline api. I think at this point the account id as part of the user id is the only remaining piece
Back to the grind, I have vibration & in-app popup notifications for new messages working (i just realized there’s no way to tell there’s a vibration in the video lol)
This is also an informal request for custom messages (again)!! It’s a way that I’d like to show appreciation for everyone that’s in on the ground floor early, supporting me through this journey
Ok so setting up my own oauth-ish system is going to be necessary no matter what, and the implementation makes 90% sense:
- first time setup w/ qr code + login code, server verifies and gives access token + refresh token, and the rest works like it does now
- BUT the part I’m hung up on is cross-application verification. does that mean I need to have a username/password system in place? i really can’t think of any ideas that don’t require a login of some kind
Best practices are just best practices. If you aren’t handling PII (you aren’t) you could probably just hand out API keys and say “don’t forget this or you’ll cry”. So sky’s the limit from there
gotta dream big, the future of the Pebble Land Empire™ is at stake
Keep on keeping on!
(I use n8n for prototyping service integrations sometimes before implementing it end to end into my server. If you’re looking at a big rewrite)
You’ve got enough diamonds and rectangles there. If I was a product owner I’d rubber stamp your entire plan right away
Thinking about adding accessories/alternate hairstyles or outfits, some of which the player would have to unlock. E.g. by playing Bombleman you get the bombleman helmet + outfit to customize your character. Link with music boss and get some headphones. Beta test and get... a crown
One limitation is there's not enough ram and/or power on legacy watches to store and render accessories separately, but maybe if I replace some heads instead it could work? And reduce the max # of players on screen
So if like 8 people were on screen all with different outfits, the watch has to have all 8 different outfits streamed down somehow?
Maybe instead of skins everyone else can see you let the player skin all of their local client skins. So I can't see their Bombleman but you replace all of the rendering of their skins on their end, for all players, with a set of Bomblemen?
I don’t think that’s necessary, there are already 100 outfit combos (plus color swaps) that can be rendered at once with the current system. The CPU limitations:
- each player is actually 2 sprites, a head and a body
- rendering sprites is heavy on the cpu (but low memory impact). there’s a fundamental limit to how many sprites can be on screen before the game is too laggy
- If accessories are a 3rd sprite, the # of max players on screen decreases due to lag
The memory limitations - right now, I load all of the heads/bodies into ram
- 400B each, 8kB for 10 heads and 10 bodies (100 outfits). color swaps are free
- If I load in just one player’s sprites at a time, that’s 800B per player, so > 10 players it doesn’t make sense
- additionally loading each player’s sprites (either from storage or server) lags the game a bit, and realistically players are constantly going on/off screen and being loaded/unloaded
- I can maybe add two more heads before I push the final memory limits. that’s where cutting the rendered players from 16 to 8 would come into play, since each player also takes up memory
Most importantly, I don’t think this is an issue on the new big watches at all. I could add like 20 accessories as a 3rd sprite no problem (so much memory to play with), and still render 32 players at once (ok that one I’ll have to check on real hardware, the emulator is slower than the real thing!)
So after writing this out, maybe I can add accessories, but only for beefier hardware. Older watches will just not render them
It's crazy how quickly ram/heap fills up when loading images. I've had to do quite a bit of fancy footwork when transferring large images.
hi, do you know if this account token issue was fixed?
we had a number of customers affected by this issue between Mon and Wed of this week, but yesterday (Thu) I got an email from a customer saying it was suddenly fixed for them
I think there was a fix in 1.0.12 of the mobile app? Haven’t tried it yet myself. I assume that users showing logged out is what caused the blank account token
- Fix firebase auth flow (fixes missing dev token, users showing logged-out, ..)
Oh this too, I didn’t notice it earlier
- Fallback to rebble token if account null for whatever reason
awesome. I just ran through a number of tests myself and it does seem that the account token is being successfully passed to our watchfaces once again
Phew thank goodness 😮💨
yeah! have you tested yours again?
Just did and looks like it’s working as expected!
hell yeah. I woke up this morning thinking I'd have a crisis to deal with, but crisis averted
I’m so worried you’re gonna get juked like the WebSockets again
don’t worry i’m already working on an independent account system, another good learning experience for me 😅
I think you need to fork the OS and Mobile App for this project for sure
All these things you’re learning doing this makes it worth it. Plus you’re hitting all the bugs before anyone else because of it
Aw, any plans to bring it to the OG?
sadly no, it took an insane amount of optimization to get it to work on the non-og watches. the og has less than half of the runtime memory to work with! 🫨
hmm… i suppose that it *might * be able to fit on the og if I remove the game part and slim down the menus… just the messaging/friend/outfit system 🤔 i’ll think about it
#mobile-dev message
👀 maybe yet Pebble Park launching Bombleman
I missed this message when you posted it. Say the word when you want some music boss linkage for the headphones. I'm pretty sure I can fire up an app message to your app as long as I have the app id and we agree on format
I can add a button in my own companion app "Enable Pebble Park Link" and I could send you all sorts of fun stuff
Honestly if you managed to get it to run it would be amazing.
Is there an updated version of PebblePark? I'll scan chat and delete this message if I find it
Pinned message. found it.
Final hour additions just before I roll out the new update from v1 to v2 of my companion. Gotta be able to launch pebble park and Pebblemon 😊
Kicking off the collab 🕺
oh man that's super exciting!! Here's what I've got for the short term that I can get to you in the next few days (hopefully):
- You send:
LINK_MUSIC_BOSSappmessage - I allow users to select the headphones
But I do have a few questions to make this work:
- Did core app end up getting the ability to send messages to/from pkjs and a companion app?
- Would it be helpful if i published the app to the Rebble store (but hidden)? That way you get an actual link
- Would you need an actual appmessage value rather than the
MESSAGE_KEY_...part? I haven't done any companion app interactions so I'd need to learn how that's done
What's next on the radar (although a bit further out): I'm in the weeds of account/api setup which will enable much more interesting integrations.
The way I'm planning on the API integration working is:
- Music Boss gets an API key to access the server which would give you:
- Access to view basic user info (username, outfit, whatever you'd like really)
- Access to view a user's friends
- Access to view/update a user's status (20 chars, e.g. "Music Boss: Jamming")
- There would be an oauth(?) process though where:
- User gets link to login page (which will include a 2fa code either on-watch or in-app)
- User authorizes music boss to do the above
ACCESS GRANTED
- I am not sure about that. What I believe could work is me sending this AppMessage directly to your pebble app, using your app UUID (which i grabbed from the PBW). You could grab it and updated your JS companion with it.
- I was looking for it on the appstore, but I was able to use your pbw to get the app uuid.
- Would you like me to send you an app message when the user starts playing music/pauses music so that their character can have headphones on when listening, off when not? I'll send a sample message below one sec.
PebbleDictionary playStateData = new PebbleDictionary(); playStateData.addInt8(0xF1, (byte) playstate); PebbleKit.sendDataToPebble(context, MBConstants.PEBBLE_PARK_UUID, playStateData);
I could do something like this. I'm still on PebbleKit Classic. I will move to V2 at some point, I've just been so busy with work that I'd rather focus on app functionality vs migrating to new pebblekit for now.
I could pack all sorts of stuff into an app message at the same time, we could agree on a schema and you could extra anything you want to use.
0xF1 message key is the next one in my list of keys currently unused.
and likely far enough away from any you've used.
This sounds amazing. Status update...sick. "Listening to (song) by (artist)"
Now on the Rebble Appstore!
Access it using this link: https://apps.rebble.io/en_US/application/69b6f9671e2d8e000a4ac186 (it's hidden from the general public)
This is also the 0.10.0a release, forgot to mention. Patch notes:
@remote totem For your knowledge:
- I set up an app message for
0xF1to start with:1indicates that music has started playing (player puts on headphones)0indicates that music has stopped playing (player takes off headphones)
- Good chance I didn't do it correctly on my side, I did an offset of 10000 to align with the message keys? So 10241? Let me know if it doesn't work and i can change it
- For now it's client side only. I think doing anything more complicated will require an API integration, so stay tuned for that
Here's an example of receiving a play/stop message and the player putting on/taking off headphones
Never been a more beautiful banner
iOS users in shambles
Once I get an API up and running, us iOS users can rejoice!!
How so? What’s the plan for iOS? I didn’t see it above (if you could subscribe to music events from the system that’d be cool but you can’t 😢)
Ohhh i think i misunderstood, are you talking about music boss on ios? in which case shambles are still in place
Yeah that’s what I meant. I’ll return to shambles then
This is awesome!! And no problem about (potentially) not doing it right. Once I've got it setup, I'll give a sample of how I'd receive it if I was receiving it on my own app. I'll likely take a crack at it during my morning coffee session tomorrow.
I could also pack a string "song title|artist" with another message key in the same app message.
Gonna play some air hockey and hang out with my son but at the same time I've got my brain... Brainstorming 😎
hey! so the offset thing isn't needed for how I normally send messages. Here's what i suggest.
I don't use package.json messageKeys at all. My keys are raw hex integers defined directly in a C enum and read with dict_find() using the raw number. No auto-assignment, no offsets. 0xF1 = 241 is the key, that's it.
Step 1) Add the constant to your enum
Wherever you define your message key constants, add:
MUSIC_PLAY_STATE = 0xF1 // 241 — 1 = playing, 0 = paused
Step 2) Read it in your inbox_received_handler
Use this exact pattern:
Tuple *music_state = dict_find(received, MUSIC_PLAY_STATE); if (music_state != NULL) { uint8_t is_playing; memcpy(&is_playing, &music_state->value->uint8, sizeof(is_playing)); // is_playing == 1 → headphones on // is_playing == 0 → headphones off handle_music_state(is_playing); // whatever your function is called }
I'm working on this now a bit, my son got distracted by a friend coming online 😆
I pushed a quick release that changes the key to match straight 0xF1 rather than the offset one! It'll be 0.11.0 on the store.
You're welcome to pack other things in, but I won't be able to really use them until I get through that larger API change, which is going to be volatile, just a warning 🤫
No rush and no pressure on my end.
thanks for the quick release, i'm excited to give it a try.
doing debug build then rolling out this internal release.
Niiiice! 
I'm sitting here playing and pausing just to see it go on and off. It's the small things that give the most pleasure. Gotta get you on internal builds.
Where's the app?
if it's hidden how do i install it? the store isnt a web browser... I can't paste a url
You should be able to click the "GET" button on the Rebble store page and it should take you to the respective in-app store page.
I use Chrome on Android, maybe try another browser?
Seems like Firefox is somehow bringing up the desktop version of the store page?
Oh when I go to the mobile site it works on firefox too.
I prefer desktop view of the internet cause I have a trifold
Thanks for help
so besides walk around, I got that figured out, what am I supposed to do?
I customized my character and just walked around a bit to enjoy the work put in. I bet now's a great time to give the dev some ideas on what else.
For this next trick I'll overload a developer with ideas for the park: set up a picnic, rides like a ferris wheel, maybe voice to text for chat bubbles? Uh oh! 🤣
Pebble Park is just the first piece in a larger Pebble Land ecosystem. You can interact with other players (when they’re online) and send messages to each other!… And that’s all that will fit in a single app (on the legacy watches, at least).
The idea is for this to be a hub world for players. Other apps can hook into the Pebble Land servers to utilize a shared friends list, messaging system, and more!
The apps i’m currently working on integrating are:
- Bombleman https://discord.com/channels/221364737269694464/1467245445884674150
- And a few more on the way #1462272856133210142 (chatroom, runescape-like game)
I didn't think I could be more excited about this project.
I love this, i want to live in a 2d pokemon world, red/blue/yellow live in my heart even at 40.
When/if you're ready for more goodies from Music Boss say the word.
Wow that's pretty amazing, would it be possible to do the same with a work out app like jayps? Like have the little guy run in place or even have him wearing headphones and running in place if doing listing to music at the same time?
Actually any app can receive that app message. I wonder, I may make it a general thing where any app can receive play state!
In its current form any developer can receive the play state and do something with it (headphones while running, sick!)
If you can work on adding some basic functionality for the OG pebble as discussed that would be so awesome, the added performance would carry over to the other pebble devices as-well.
That will probably end up being a standalone messaging/friend manager app! Designed to fit within the og watch constraints
finally got a chance to try out the music boss collab!!
(also got around to setting up this phone stand arm thing that attaches to my desk for better watch video recording!)
Yes!
Oh man. I've pieced together something similar
I keep collecting various things. I have a camera from the OG pebble days I use for recording. Still amazing
Big screen 👍
Omg the PT2 let's Pebble Park BREEEAAATH
I love that you did more visible map vs larger assets.
Seeing so many people receiving the PT2s has been so amazing. Glad you got yours
WTF, I downloaded it and this is the coolest thing to have graced this watch
there will likely not be an official timeline server replacement it seems 🤷♀️ https://forum.repebble.com/t/server-pebble-app-phone-watch-notification/674
looks like i’ll be figuring out how to do web app notifications after all 🥲
there is a PR to coredevices/mobileapp adding rebble timeline
let me check on it
it is marked as a draft: https://github.com/coredevices/mobileapp/pull/131
This fetches the timelines whenever rebble timeline sends an fcm message, this is the signal that you should call /sync to get new timeline.
This only support pins now.
pebble-dev/rebble-timeline-s...
Interesting, looks like it’s configured for local development still 🤔 Wonder what it would take to finish that PR?
the original time has a crazy bezzel
v0.12.0 - Pebble Time 2 touch controls
Link: https://apps.rebble.io/en_US/application/69b6f9671e2d8e000a4ac186
Just movement around the world, not the time for menu navigation
I realized that the PKJS app token is different when the app is sideloaded vs installed via the rebble app store. Maybe it uses core account for the former and rebble account for the latter? Either way I learned how to manually edit databases on the server via command line (without dropping any tables 😮💨)
I think the PKJS tokens have always differed between sideloaded and store apps
