itch.io 游戏上架流程、平台开发概要教程

Itch.io 是国外最大的独立游戏分享平台,免费的发布平台,开放源代码,但对国内网络可能不是很友好。2013 由 Leaf Corcoran 推出网站,之后推出了全平台客户端,该网站的政策对于独立制作游戏非常友好,对于独立游戏的审核也相对宽松,经常鼓励游戏独立制作人并且上架他们的作品。
开发者可以在 Revenue Sharing 设置中任意调整分成比例,截至可以不给 Itch.io 抽成,提供参考配置:
itch.io default (10%)
Industry standard (30%)
The itch book https://itch.io/docs/itch/
https://itch.io/docs/butler/
https://broth.itch.ovh/butler
Web 上传限制作品容量不能超过 2GB,但可以使用 butler 上工具上传高达 30GB 的作品。
butler is a small command-line tool that lets you:
1. Upload builds of your games quickly & reliably to itch.io
2. Generate patches and apply them offline
3. Run a few other utility commands
butler is easily integrated into an automated build/deploy pipeline. Like most of the itch.io delivery infrastructure, it is open-source (MIT licensed):
https://github.com/itchio/butler
It is also a good showcase of the Wharf open specification, using only openly documented algorithms and file formats, encouraging the development of ompatible tools:
https://docs.itch.ovh/wharf
And is used by the itch app for various operations.
Keep reading to learn how to use it! First you'll want to install butler.
Accepting Payments and Getting Paid
https://itch.io/docs/creators/payments
Itch.io 收付款只支持两种方式:
1. **PayPal** — Pay with PayPal balance, card, or bank
2. **Stripe** — Pay with credit or debit card
国内注册 PayPal 账户需要提供一个营业执照给 PayPal 才能收款。
还有一种 itch 平台代收的收款方式,自己注册一个 Payoneer 账号绑定国内银行卡。
To close up, here’s a quick recap of the two payout modes itch.io supports:
* `Direct to you` – Each transaction is handled directly through your PayPal or Stripe account. You are the merchant of record
* `Collected by itch.io, paid later` – itch.io’s Stripe and PayPal accounts handle all transactions, you can request a payout to collect you earnings in bulk at a later time
https://itch.io/user/settings/seller/get-started
Itch.io 为游戏评论家和作家提供了专门的新闻账户 Press Accounts,如果开发者选择将游戏加入系统,这些评论家、作家们可以免费下载这些付费游戏。Partner & Affiliate 合作伙伴和联盟计划是为那些创建专注于游戏和其他媒体内容的人提供的一系列工具:
01. A way to verify your identity on itch.io
— Link your Twitter, Twitch, YouTube, email, etc. —
So creators can confidently give review copies to trusted people in the community
02. Access a large collection of paid games (the partner library) that have opted into the partner system for free access
03. A partner profile page that shows your publications, accounts, and contributions
04. Affiliate codes — Tag your links to attribute purchases to your account
开发者可以创建任意 API keys 来访问 itch.io API 服务,获取开发者账户中的游戏产品相关数据。也可以注册 OAuth Applications 用于开发第三方登录应用。
https://itch.io/docs/api/overview
https://itch.io/docs/api/serverside
https://itch.io/docs/itch/integrating/api/
服务器端 API 接口如下,可以获取开发者账户信息、游戏产品数据、用户已经购买的下载链接等等:
https://itch.io/api/1/KEY/credentials/info
https://itch.io/api/1/KEY/me
https://itch.io/api/1/KEY/my-games
https://itch.io/api/1/KEY/game/GAME_ID/download_keys
https://itch.io/api/1/KEY/game/GAME_ID/purchases
You can integrate your game with the itch.io API in different ways, depending on whether they're using the app or not.
When using the app, you can include an app manifest which will directly pass your game an API key using an environment variable.
Combined with the rest of our server-side API, you can do things like:
01. Authenticate a user (ie. know for sure which itch.io account is playing your game)
02. Retrieve user information (such as their username, avatar, whether they have a press account, etc.)
03. Get a proof of purchase
For example, you might want your online play servers to be only accessible by users who have purchased a legitimate copy of your game, and to all press users.
https://itch.io/docs/itch/integrating/manifest.html
https://itch.io/docs/itch/integrating/manifest-actions.html
https://itch.io/docs/itch/integrating/manifest/validating-your-manifest.html
https://itch.io/docs/itch/integrating/troubleshooting-guide.html
如果使用 itch.io app,则可以使用游戏配置清单文件 manifest,名称为 `.itch.toml`,App manifests 文件存放于游戏主目录中。
There are several good reasons to include an app manifest with your game:
1. You want to provide a choice between multiple launch targets
2. Examples: game, level editor, etc.
3. Your app needs access to the itch.io API, for authentication or more
"It launches the wrong thing" is usually a bad reason to ship a manifest, see Troubleshooting.
清单中添加动作时,path 可以指定一个相于清单文件的路径,或者一个 URL 地址。如果路径指向的目录、程序不存在会触发运行错误,并且路径相对于安装目录,程序路径使用绝对路径将不会执行。可以给已经安装的游戏添加配置清单,清单动作可以指定 platform 为可执行的平台信息,如 windows/osx/linux,这样就不会在不兼容的平台显示相应的动作。可以使用 butler 命令行工具验证清单文件的正确性。
动作名称可以使用任意字符串,但需要自行提供本地化翻译如果有需要,以下常用的名称自动多语言适应:
1. **play**: shows up as **Play Now** in english, is highlighted
2. **editor**: shows up as **Editor** in english
3. **manual**: shows up as **User Manual** in english
4. **forums**: shows up as **Forums** in english
对于控制台界面的游戏,可以指定 `console = true` 方式运行。
通过指定 `scope = "profile:me"`,游戏程序可以获取指定作用域配置的 API key。目前唯一支持的作用域 `me` 表示当前用户。设置此参数后,itch.io app 会设置两个包含 API key 信息的环境变量,游戏程序可以使用 API key 可以访问接口提供的各种功能。游戏也可以直接嵌入 API key 访问服务接口。
Valid values for scope:
1. `profile:me`: grants access to https://itch.io/api/1/jwt/me
2. (This is the only valid scope for now)
When the `scope` parameter is set, the itch.io app sets the following environment
variables:
1. `ITCHIO_API_KEY` :a game-specific, session-specific API key
2. `ITCHIO_API_KEY_EXPIRES_AT` the expiration date of the key, in iso-8601 format.
Making requests with the API key
The itch.io API key provided to the game should be the value of an HTTP
header named Authorization.
For example, using the JavaScript library needle, one would do:
Accessing the API key in HTML5 games
The HTML5 environment doesn't grant access to environment variables by design,
so the itch app injects a global object named Itch into the JavaScript runtime.
Here's the proper way to check that it's there:
https://itch.io/docs/itch/using/sandbox.html
使用 `sandbox = true` 选项可以启用 itch.io 提供的沙箱环境,防止一些典型的恶意程序搞破坏:
1. Limit what files a process can read
2. Limit what files a process can write to
3. On Linux, be more permissive about writes, but redirect them to a safe, per-game folder
4. On Windows, run games as a different, less-privileged user
一个打印程序接收参数的 print_args.py 脚本参考:
例如,以下可以通过 print_args.py 脚本来打印 itch.io app 启动游戏时传递的参数,需要手动复制 Python 可执行程序到游戏主目录中:
https://itch.io/docs/creators/download-keys
当用户完成支付后,就会获得相应的 Download keys & URLs 以下载游戏文件,以下三种情形都会生成一个 download key:
1. Someone pays for your project (or purchases a bundle that includes your project)
2. You, the project owner, generate one from the project edit page
3. Someone “claims” your project in a 100% off sale/bundle that has claiming enabled
但是用户下载免费项目时,不会生成 download key,用户不会因为免费下载而拥有一个游戏。但是用户支持了一个游戏项目,包括价格为 0 的情况,他们仍然会获取 download key,并且在项目涨价后依然有效。Download key 对应的 URL 链接是唯一的,并且不应该分享。
Hosting a sale or bundle
https://itch.io/docs/creators/sales
https://itch.io/docs/creators/bundles
itch.io 上的销售可以让你在任何时间段内以折扣价提供任何已付款商品的组合。任何人都可以在任何时候举办促销活动!如果你的销售中有多件商品,那么它们可以捆绑在一起供用户购买。你可以选择添加捆绑价格,当所有东西一起购买时的自定义价格。每个 Bundle 销售仅限于 itch.io 上单个帐户的项目,如果您需要在多个帐户上托管捆绑包,需要使用配套功能合作捆绑包 co-op bundle。
https://itch.io/docs/creators/html5
https://itch.io/docs/itch/integrating/platforms/web.html
https://github.com/itchio/itch
开发 HTML5 游戏可以直接在 itch.io 页面上运行,无需用户下载。
桌面程序 itch.io app 基于 Electron 和 React 等开源 Web 框架,使用 TypeScript 语言编写。App 登录成功一次之后,就可以离线运行。通过 Shift+F12 打开 Chrome Developer Tools 调试程序。
https://itch.io/docs/creators/css-guide
支持 CSS 编辑,可以在 itch.io 以下页面中定制样式:
1. Project pages (Including Devlog posts)
2. Jam pages
3. Profile pages
https://itch.io/jams
https://itch.io/docs/creators/game-jams
itch.io 主页上有 Game Jams 活动,开发者可以随机加入,并上托管自己的 Jam 作品,或创建比赛。Game Jams 是游戏开发者用于快速制作游戏的一种赛事,常用于锻炼和提升游戏开发者的技能水平。Jam Calendar 中可以看到那些响动正在进行,那么已经结束,或者还没有开始。
最后,欢迎访问个人主页 https://jeangowhy.itch.io/ 尽管还没有任何游戏作品!