itch.io Spring Selects Series A
On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

quyse

32
Posts
2
Topics
8
Followers
16
Following
A member registered Jan 25, 2015 · View creator page →

Creator of

Recent community posts

I don’t think that’s supported, because of CPU architecture - Raspberry Pi is ARM board, but itch app is only built for Intel x86/x64 arch currently. There’s request for ARM support on Github: https://github.com/itchio/itch/issues/2736

(2 edits)

Yeah I think you may have better luck with butlerd https://github.com/itchio/butler/tree/master/butlerd - basically butler is a command line interface to butlerd which is a daemon with JSON RPC interface. I did not try it myself, but the docs seem to be pretty comprehensive https://docs.itch.ovh/butlerd/master/ .

GameHub launcher apparently uses butlerd for itch.io integration https://github.com/tkashkin/GameHub/tree/master/src/data/sources/itch

Shit, sorry, made a mistake. Indeed the game/GAME_ID request returns just general info on the game. Uploads info is https://itch.io/api/1/API_KEY/game/28768/uploads

(1 edit)

I used to play with itch.io API for fun.

Given the creator (thorbjorn) and game (tiled), get the game’s numeric id:

https://thorbjorn.itch.io/tiled/data.json - returns JSON with id 28768

Get game’s uploads using game id:

https://itch.io/api/1/API_KEY/game/28768/uploads - returns JSON array of uploads, containing id’s, display/channel names, etc of uploads.

Download upload using upload id (e.g. of windows-64bit):

curl https://itch.io/api/1/API_KEY/upload/504289/download - returns download link in JSON

That should work for free games, with API_KEY of any user. I have not tried to work with paid ones.

EDITED: fixed mistake with upload info request

Ok, thank you very much for the investigation. I tried to reproduce on Fedora 34 in VM and so far unsuccessful, the game runs smoothly for me even with mouse input. So could be something specific to your setup (Nvidia or smth). Although I do see some minor issues with mouse input on Fedora, like the game seems to not capture mouse pointer when it should - so something fishy is going on, will look more into it.

Sadly, it’s not the first time we get reports that Linux version runs worse than Windows one, which usually appear to be distro- and environment-specific (and I recall there’s been a few Fedora specific issues reported as well). Sorry about that, will try to change it.

Hi, I would really appreciate some details, specifically what Linux distribution (and version) you are on and what are the issues exactly. Also if there’s Log.txt you can post it here or send it to quyse@kozinaka.com so I can take a look.

If user runs your game using the itch app, it sets the environment variable ITCHIO_API_KEY which can be used with server-side API, provided that you added .itch.toml manifest file with proper scope attribute - the link also includes an example of using /api/1/jwt/me endpoint for getting the user info.

If user does not use itch app, it becomes more complicated. The game can use itch OAuth for authentication, but that would require redirecting user to browser (or using some sort of embedded browser).

Yeah, without Steam it acts as a portable build, and writes the log and settings into its own folder, the behavior which (we hope) makes sense and is expected from a game downloaded as a zip file. We should handle the error better. Thanks for the follow-up!

Hi! Steam errors in the log are actually expected - for simplicity we publish on itch.io the exact same executable as on Steam. It tries to detect if it’s running under Steam, and if not, proceeds without it, so those errors about Steam should be ignored.

It definitely should not crash though! Can you please find Log.txt file (it should be in the same folder where the game is located) and post its contents here or email it to quyse@kozinaka.com if it’s big (it probably is). Also what Linux distribution you are on? Really appreciate any more info on that.

The embed code generated by itch.io lacks some attributes present in the iframe of the project page. As a result your project prints messages in the browser’s console indicating permission issues preventing the video from playing. It seems adding allow="autoplay" attribute to the iframe tag solves it.

href=“blob:https://A_SUBDOMAIN_WAS_HERE.ssl.hwcdn.net/A_GUID_WAS_HERE”

This is a blob URL (note blob:), created with URL.createObjectURL browser API, and so it is not served from that domain (and the URL is only valid in your browser btw). Presence of the domain there only means that the URL was generated by script served from that domain, that is, by your game.

So, for what it’s worth, it still may be that your game build somehow got infected before you uploaded it. Also it may simply be some shady ad, if you have integrated some in-game ad SDK. It seems you took down the web version, so of course cannot say for sure.

We can't grant users a license to waive copyright.

Yeah I know, that's why I said "essentially". Probably better to say "effectively". You cannot waive copyright, but you can require publishers to grant users a license with almost the same rights as copyright. Specifically, "license to distribute" sounds like it officially allows unlimited copying or pirating. I'm not sure I understand this right, I'm not a lawyer, I just saw it in terms and raised a question :)

As for content scraping, do we need to make rules about it now?

Ah, no, I don't really need rules. I guess being reasonable is enough. Although I would appreciate at least some informal guidance, i.e. what is recommended request rate for itch.io, or whether it's OK to download the games themselves. Downloading and analyzing terabytes of data is not that costly nowadays, especially considering that incoming traffic on clouds is usually free, but obviously some cost will be on itch.io for its outgoing traffic and CDN charges.

To be clear, I'm not working on this project right now, and it's not that serious. What's implemented (quite a while ago) is this: https://itchy.quyse.io/ - simple analyzer of publicly available itch.io projects. Example analysis (game I'm working on): https://itchy.quyse.io/game/19957. The idea is to expand analysis to all itch.io projects (rather than do it on-demand), and gather statistics about games binaries/resources, like what percentage of all games uses Unity, or what are the minimal required Linux distributions for games with Linux version, etc. I hope I'll get to work on it as a weekend project at some point.

A bit off-topic, but I just re-read itch.io Terms of Service, in particular:

Publishers retain all ownership rights to the submitted content, and by submitting content to the Service, Publishers hereby grant the following:
...
To Users, a non-exclusive, perpetual license to access the content and to use, reproduce, distribute, display and perform such content as permitted through the functionality of the Service. Users shall retain a license to this content even after the content is removed from the Service.

That's an interesting phrasing. It says that users are allowed to "distribute" games they download, i.e. essentially waiving copyright? Usually terms of service are quite the opposite, it looks like the words "you may not" are missing here :)

So I guess content scraping cannot be forbidden with such liberal terms of service, isn't it? Of course, there're still technical considerations, like do not overflow website with requests, etc. Would be nice to have official rules for scraping.

I once scraped itch.io games' public information for game ids < 200000 as an experiment. Took a few weeks or so (I used very low request rate). Wanted to calculate some interesting stats about itch.io games, but abandoned the project because of lack of time. Maybe I'll resume it someday. A few stats I got: number of published games in this range was 125775, and total size of uploads of those games was ~5.7 Tb (I didn't download them, only collected metadata). Now I can see that number of games is more than 200k, and max game id is in ~450k range. Quite a lot, but doable :)

(2 edits)

Game looks cool! As for downloads, you (the dev) really need to use itch.io command line tools i.e. butler for uploading - it will fix downloads in the itch.io app, allows big uploads like this, and enables other advantages such as small incremental updates in the app when new version of the game comes out.

(1 edit)

I'm having the exact same security problem, that my app can't figure out if a given OAuth key was issued for my app and not for evil one. I'm working on an online tool which works with sensitive data (API keys), and I'd like to use itch.io OAuth authentication instead of inventing my own, but it's not secure in its current condition. As I understand, adding a field like

issuer: { client_id: "ABCDEF" }

to /me API response would fully solve this problem. Would it be possible to fix please? @leafo

That's nice, thanks for clarification!

@leafo AFAIK itch.io does use Google Analytics script which presumably collects/infers quite a lot of information about users. Personally I would like itch.io to be analytics-free (in addition to ads-free), but as it's already there, some statistics should be available to the website owner, isn't it?

API endpoints for this stuff actually do exist, just not documented :) For example, to get user's info, perform simple GET request:

curl https://itch.io/api/1/<YOUR_API_TOKEN>/users/<USER_ID>

For user_id=1 the result is:

{"user":{"url":"https:\/\/leafo.itch.io","username":"leafo","id":1,"cover_url":"https:\/\/img.itch.zone\/aW1hZ2UyL3VzZXIvMS8zODEzNi5wbmc=\/100x100%23\/fsSoF5.png"}}

You can find other APIs in the itch client's code https://github.com/itchio/itch/blob/master/src/api/index.ts . Obviously no guarantee that it will work in future. Would be very nice if these APIs were officially supported and documented.

I guess there's a verification procedure, so having a youtube channel is not enough to get press account. Also every developer has to explicitly opt in their games, by default press accounts have no access to them.

Hi Mew2master! You need to run ./launch command in terminal, it's a bash script located in the game directory. Just running the insatia executable doesn't work because it cannot find necessary libraries packaged with the game (like libSDL2 as you see). The `launch` script sets special environment variable in order to help the executable find them.

BTW if you're enjoying games on itch.io in general, you may consider installing free (and open source) itch.io app. The app makes installing, running and updating most of the itch.io games (including Insatia) very easy - no need to use terminal!

Technically it's very possible, but may require some rethinking of controls/UI. The game was designed with desktop devices in mind, and right now we are focused on PC/Linux/Mac versions for upcoming Steam release. I guess we'll think about mobiles afterwards :)

Ok, no problem, thanks again for your feedback! I took a note, and try to test more on multiple Mac systems to eliminate problems like this one.

Hi Daoloth, that's sad, thanks for reporting this! Could you please upload your Log.txt file on some site like gist.github.com and post here link to it? Your Log.txt must be in the folder Contents/MacOS inside the Insatia package. If you're running Insatia via itch app, you can use 'Show local files' button to get to the package. (Just in case, you can use 'Show Package Contents' command in the package's context menu in Finder to open the package rather than launch it).

Also, do you happen to have multiple sound outputs? Like additional sound card, or speakers + headphones attached at the same time? It's possible we don't handle that correctly at the moment, you can try to disable or unplug additional devices and see if you can get sounds on other device. If it's the case, we'll fix it! Sorry for the trouble, we have very few Mac testers unfortunately, so some Mac-specific problems are hard to catch.

Update: gamepads are supported now!

(1 edit)

Hey happy Mac owners,

We have a Mac version of Insatia now! It's fully playable, in terms of gameplay and content it's the same game as Insatia on Windows and Linux, and from now on we're going to support all three platforms. In terms of codebase it's much closer to Linux version though, so it has the same known issues as the Linux one: no gamepad support, some menu settings don't work, and other small things. We'll get those done eventually.

I must admit that I have much more development experience for Linux rather than Mac, so any feedback on how it actually works on Mac (or how it doesn't work on Mac) will be priceless. Please be sure to mention your configuration (OS version, hardware) when reporting issues. Also please read about system requirements and possible caveats at the bottom of the game page.

Enjoy!

Yes, that's planned, we'll try to implement skins (and maybe even integration with Steam Workshop for easy modding) for release on Steam/itch.io in Spring 2017.

(1 edit)

Thanks for reminding me about .desktop files! Indeed relative paths seem to be not working at all, but there's a workaround (thanks to this SO answer), use %k in Exec line of .desktop file to get path to .desktop file itself, and than extract directory name:

Exec=bash -c "$(dirname %k)/launch"

.desktop file is also better than bare bash script because it may be displayed with custom icon, and even localized name.

UPDATE about icon: looks like relative-path icon is not possible. This time really :(

I made a package for Linux according to itch guidelines, i.e. two versions of executable (x64, x86) and a `launch` bash script which selects a version and sets appropriate LD_LIBRARY_PATH and things. However it's not easy for some users to run it: the problem is that they don't use itch app, they download & unpack .zip manually, and they don't or cannot use command line. So they cannot run the script in Ubuntu: double click just opens it in text editor, despite that it has executable permission. And I don't even see any way to run a bash script in Ubuntu's graphical shell, without touching command line. There's no 'run' context menu command or something like this. I don't want to force users to use command line, what else I can do? :)

Cool, thanks for your feedback CyberTriber! Multiplayer is planned for release along with map editor :)

(8 edits)

Hey Linux lovers,

I'm the guy porting Insatia onto Linux. Most recent alpha version is already in Downloads section, please give it a try and leave feedback in this topic!

It's native port using OpenGL and SDL2. Original game uses custom Windows-only DirectX 11 based engine, so porting wasn't trivial. Most of the work is done, and Linux build is fully playable, graphics & sounds are all in place. Some features have been eaten accidentally on the way, but I'll get them back!

Known issues at the moment:

  • Only English letters are allowed in name of the character
  • Some settings in menu like gamma/fullscreen mode not working

Game is tested on Ubuntu and Arch Linux, and is supposed to work on any reasonably recent distribution. Any feedback on how it actually goes is highly appreciated.

(1 edit)

That would be cool, but how many Android games support running on x86/x64 version of Android? A lot of games probably use NDK for performance, i.e. contain native binaries built for ARM.

On a side note, having Wine support with all the quirks would be good too.

EDIT: oh, I see, RemixOS has an emulator.

Oh, I like the idea of itchOS! If it's lightweight and boots fast, provides all necessary drivers out-of-the-box (graphics, sound, controllers, VR?, etc) or downloads them automatically, comes preloaded with itch app, runs from usb dongle and doesn't make user touch command line (unless they want that themselves), that might be a good step towards more Linux gaming.

Just got an idea about re-using butler/wharf's binary patch support for updating itchOS. I mean, does even any existing linux distribution support binary patches for updating? As far as I know all package managers (apt, yum, pacman) always downloading full packages. itch app is essentially a simple package manager already, so extending it to be able to update system quickly and smoothly may be interesting.