Yes! Sounds good!
Recent community posts
Thanks. That helps a ton already, provided you won't switch sandbox mechanisms anytime soon. For now, I'll hard-code my games not to try things that won't work in the sandbox.
If you implement Discord RPC in itch, you should probably add a parameter to the manifest that configures if a game handles its own rich presence.
I wanted to implement Discord RPC for matchmaking mostly, so you can click "join game", but that's something I need to bake into my own game logic. Instead of queueing and waiting in the game client, you can idle in Discord and invite people on your friend list. Queueing times for a small indie games might be hours otherwise.
The galaxy brain solution would be to run Discord in the same sandbox... As I understand it, itch sandboxing on Windows uses a separate user account that is basically shared between all itch games. Sandboxing Discord might be a good idea anyway, but then automatic game detection won't work, because Discord needs to look at other processes.
I have recently started to integrate the itch.io API and the Discord RPC API into a new game of mine. The Discord RPC API uses Unix domain sockets on Mac and Linux, and named pipes on Windows.
I have tried to get it to work inside the itch app, and I can open the socket, but it fails in a rather tricky way: Firejail hides all other processes. Inside firejail it looks like I have PID 3, and I can't get my "external" PID. When I try to talk to Discord, Discord can't find my game process running, but it looks like everything works fine and my game runs as PID 3.
I probably won't even be able to open the named pipe on Win32 because the game is not running as the user who crated the pipe, but I haven't checked that yet.
I like that I can mark my game as sandbox-compatible in the manifest, but if I don't think I will opt my games into them yet, if it works inconsistently across platforms.
If I could get an environment variable like ITCHIO_SANDBOX=firejail or ITCHIO_SANDBOX=win_user, that would help a bunch. I could just disable the Discord RPC and save myself headache and bug reports, and if the variable isn't set, I could go on as usual.
Even better for Discord RPC specifically would be a way to get the PID (like in ITCHIO_GAME_PID=12345) from the butler process that started the game, but that's such a Discord-specific thing I'm not sure it's worth the effort, and if you decide to put effort into Discord things, you (probably Amos) might as well implement the presence API yourself, because know the game's name (but not the internal game state).
Are there any other devs on itch.io who use SDKs and APIs like that?
Is there a way to query rewards in the serverside purchase API, or at a different endpoint similar to the purchase API?
This is related to my other question about the API, but more relevant to refinery, so I posted it here.
I am closed-beta testing an online game, and distributing the client on itch. I have added keys for my game as "Other" on itch, so if you purchased the game on itch, you would get a key for my game, make a multiplayer account in the game, and paste the into the game to activate your account.
That method is a bit finicky and cumbersome, though. It's fine for the beta, but not for the finished game.
I thought about instead verifying purchases through the itch API (https://itch.io/docs/api/serverside#reference/gameviewpurchases-httpsitchioapi1k...). You still make a multiplayer account on my server, but after you validated your e-mail, I can just query the itch server for purchases from your email address, or if you use a different email address, I could have you connect an itch account via OAuth. This way, I don't have to copy-paste keys into itch, and players don't have to copy-paste keys into the game.
Once the accounts are connected, I could even log in itch app users automatically via the JWT token!
So here's my main question:
if make this query:
Do I also get purchases from logged-out users who bought without an account?
If I query
Can I get logged-out users who bought without an account?
I assume that's possible, because of https://itch.io/docs/general/faq#ive-lost-my-purchase-confirmation-e-mail-how-do-i-get-the-link-again, but I don't know how the API is specified to handle this. Also you can purchase games as gifts: https://itch.io/updates/you-can-now-purchase-games-as-gifts-on-itchio, but I don't know if they show up the the gift buyer's purchases or in the gift receiver's purchases.
If I can verify the amount of money spent via itch API, I can add some extra cosmetic items for higher tiers, like these sweet hats:
But I don't know how and where the purchase shows up.
I suspect you're already doing the right thing and when I use the API to verify purchases it will work as I need to, but I'd like you to clarify the documentation or respond here before I go ahead and implement this and somebody buys my game but can't verify his account, or gets a gifted key and can't unlock the sombrero.
Also I would like to know if you are cool with giving users of the press system a hat unless they pay money or if that's abusing the system. I would find that hilarious.
There are so many open source games that people could upload to itch.io, and I would love to be able to play Sauerbraten or Hedgewars from the itch app.
I also understand why you would not want to allow random people to upload their own HedgeWars builds.
But if open source uploader just "forked" Xonotic and called it "Shmonitic", that would be totally within the rules, right? Or any re-branded "fork" for that matter? Not that I'm advocating for asset flips! I just want to make sure I understand your concern. I think your concern is either people piggybacking on the success of certain games to distribute adware, misrepresenting themselves as the official developers, or a flood of near-identical uploads because I have as much right as the next guy to upload Xonotic to itch.io, as long as I honor the GPL.
But if I call my game "Shmonotic", then I won't mislead people who google for the official "Xonotic".
German board games have a self-rated "suggested age" that is more about the cognitive difficulty and the themes, so a non-violent game about politics would be 12+, Chutes & Ladders is 4+ and Catan is 10+. Probably not a lot of four-year-olds on itch though...
But in that context, "adult themes" would be more along the lines of "Kirby does his taxes".
It would be cool if the itch app could automatically set the "Now Playing" field in the Discord App based on the itch.io title field. Or is that already possible?
You would have to have this as an option, maybe some people don't want to have Robert Yang's spanking game as their status by accident, or other NSFW games, or they want to add games manually like Discord does it on Linux right now.
I think there is already a Steam integration in Discord, but I did not look at it in detail yet. I will ask the Discord people about this also.
I built a mac .app bundle for one of my games. I can't put savegames inside the bundle, so I put them into /Users/$NAME/Library/Application Support/$GAME/savegames. This has the nice effect that installing new versions of the game with the itch-app will not erase saves games and screenshots. Also you can put the game somewhere read-only for all users and each user has his own writable savegame/options/player profile place. The second point is moot with the itch app of course, as it installs the whole game in a per-user config directory anyway.
The problems are:
- When you uninstall the game through the itch app, the savegame folder will stay
- You can't put the downloaded game on a thumb drive
Will itch have a preferred savegame folder outside the game folder? Should I do something different when running under itch? How do other games handle savegames (and screenshots and highscores)?
Games Replays now show more clearly how points are calculated:
Improved Gamepad Support: Detect Xbox (and PS4) controllers under Windows and Linux.
Show Button Mappings for gamepad or keyboard
Better colorblind-friendly mode (Red-blue with higher contrast)
The web profile now shows a graph of your estimated skill and a button to friend payers from the web:
This week I implemented user profiles and ladder ranking and matchmaking. It used to be that you can play un-ranked random games. Now you can play ranked games. The server will update your estimated skill level when you finish a ranked game. When you play a new ranked or unranked game against ladder opponents, it will take the skill difference and how often the two players have played against each other into account.
Profile pages show name, gravatar, ladder stats and the hat worn in-game:
The ladder shows all players who have won at least one ranked game this season:
Bullet Blueprint is a turn-based tactics platformer!
You control units with jump+run controls, one unit after the other. Bullet Blueprint is a turn-based play-by-email game: You have lots of time to get your plan right. All replays online games are publicly available.
Replay of a Bullet Blueprint game:
EDIT: There used to be a question about the name & logo here
My pixel art workflow is kind of weird. I make backgrounds/tiles/decoration art with GIMP, but items/characters/animations with aseprite. I make low-poly 3D models with wings3D, I won't/can't really do hi-poly.
I like the freedom coding in PyGame with no engine gives you, but nowadays I also make games in HaxeFlixel. I can add python libraries like MoviePy and create small video clips and tweet them right from inside the game. Distributing a game with PyGame and native dependencies is a pain though.
I have discovered the Yarn dialog editor. That is pretty good.