Huemill が交易を公正に保つ仕組み
ひとりで遊ぶ自動化ゲームなら、チートで変わるのは自分のセーブデータだけです。Huemill では、自分の作ったものが誰かの工場に入っていくので、チートの影響もほかのプレイヤーに届いてしまいます。そこで、何が本当に起きたかを決めるのは、手元の PC ではなくサーバーにしています。
PC が送るのは「結果」ではなく「操作」
建物を置いたり、ショップに出品したりしたとき、クライアントは「鉄板を500枚持っている」とサーバーに伝えるわけではありません。送るのは、行った操作だけです。
サーバーは島の写しを自分でも持っています。その写しを操作の時点まで進め、手元の PC と同じコードで操作を実行します。資材が足りない建物や、持っていないアイテムの出品は、サーバーが拒否し、島は変わりません。
どの PC でも同じ数字になる
サーバーが島を再現するには、シミュレーションの結果が手元の PC とビット単位まで一致しなければなりません。浮動小数点の計算は CPU やコンパイラによってわずかに結果が変わることがあるので、シミュレーションでは使っていません。整数(小数が要るところは固定小数点)と独自の乱数で計算し、1秒に20回の決まった刻みで進めます。同じ入力から同じ結果が出ることは、テストで確かめています。
島の時間は遊んでいる間だけ進む
島の時間が進むのは接続している間だけです。ゲームの最高速度(3倍速)より速く進めても、サーバーは受け付けません。ゲームが許す以上に早送りすることも、その場にいなかった時間を進めたことにすることもできません。裏を返せば、オフラインの間に何かが傷んだり、誰かに先を越されたりすることもありません。島はそのまま待っています。
取引はサーバーで決済する
購入・出品・出品の取り消し・おすそ分けは、どれもサーバーのデータベースで1件ずつトランザクションとして決済します。残り10個を2人が同時に買おうとしても、手に入るのはどちらか1人です。サーバーが取引を記録するまで、どちらの島も変わりません。同じ依頼が二度届いても、二重には反映しません。
交易はプレイヤーの間でお金を動かすだけで、お金を生み出しはしません。新しいお金が世界に入ってくるのは NPC の依頼からで、依頼はサーバーが出し、自分の記録と照らして確かめます。
訪問先で見えるものは本物
ほかの島を訪ねたときに見えるのは、サーバーがその島の写しと照らし合わせて確かめたスナップショットです。改造したクライアントで、持っていない工場を見せびらかすことはできません。
誰であるかは Steam が決める
テストからは Steam でログインします。サーバーは Steam に直接ログインを確かめ、それを元に誰であるかを決めます。クライアントが自分について名乗る内容は信用しません。
クライアントを改造しても得をしない
クライアントを改造すること自体はできます。でも、何を申告しても結果はサーバーが自分で検算するので、アイテムやお金や時間をごまかすことはできません。改造したクライアントにできるのは、どのプレイヤーにも送れる操作を送ることまでです。
なお、プログラムに代わりに遊ばせること(bot)は、利用規約で禁止します。