This does not run on Linux!
Blubberquark Software
Creator of
Recent community posts
Good thing. I'd feel weird deducting stars because this is super short, but also very polished, and a cool reference to Ghosts'n'Goblins, but also you don't lose any clothes, and you don't go that deep, so... Anyway, cool game, you saved me the trouble of rating it on a scale from 1 to 5 in a way that's fair to all the other contestants.
A **super hacky** workaround is downloading an old butler v15.17 binary from here: https://broth.itch.ovh/butler and replacing the butler binary in your itch installation. What makes it **super hacky** is you need to overwrite the v15.18 binary to trick itch into thinking you have the latest butler version, otherwise itch will update from 15.17 to 15.18 again and overwrite the binary that works. Well, if this is fixed in 15.19, itch will think you're on 15.18 and overwrite the hacky workaround, so it won't mess up your itch installation for eternity, I think. Only do this if you know what you're doing.
My butler binary was at
~/.config/itch/broth/butler/versions/15.18.0/butler
I'm pretty sure I know what causes the bug, and it's that this https://github.com/detailyang/go-fallocate/blob/master/fallocate_linux.go library that butler uses since the last revision doesn't implement the behaviour of posix_fallocate from libc.
Your use of NTFS is another case in point, fallocate probably fails. Either Amos fixes this in butler/ox, or we make a feature request in go-fallocate, or the linux NTFS drivers implement fallocate. I'll file a bug report in ox and go-fallocate now.
Dude. This game *is* open source already, and has been for a while. A couple of years ago, I looked at the source, and I thought to myself "How hard can it be to port this to OpenFL?"
Bad idea. I strongly suspect Aaron has tried this also.
https://github.com/st33d/red-rogue
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?
How come nobody has mentioned Aseprite?
https://dacap.itch.io/aseprite
https://github.com/aseprite/aseprite/
It's free (as in free beer) if you get it from github and compile it yourself.
Some context:
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:
https://itch.io/api/1/KEY/game/GAME_ID/purchases?email=EMAIL
Do I also get purchases from logged-out users who bought without an account?
If I query
https://itch.io/api/1/KEY/game/GAME_ID/download_keys?email=EMAIL
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:
https://fbserver.blubberquark.de/frontend/profile/...
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.
http://blubberquark.itch.io/bullet-blueprint
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.