0

コンソール アプリケーションとして実行される単純なシングル プレーヤーのテキスト ベースの RPG があるとします。過度に単純化された疑似コード:

... 
while (character.hp > 0 and monster.hp > 0)  
    console.write("Attack, Magic, Run?")  
    character.doAction(console.read())  
    monster.attack(character)  
... etc. ...  

ここで、これをマルチプレイヤー オンライン ゲームに変えたいとしましょう。サーバーでは、各クライアントを独自のスレッドで実行できますが、コードはあまり変わりません。

...
while (character.hp > 0 and monster.hp > 0)  
    socket.send("Attack, Magic, Run?")  
    character.doAction(socket.receive())  
    monster.attack(character)  
... etc. ...  

これは機能しますが、2 つの問題があり
ます。
- カスタム ソケット サーバーとクライアントを作成するのは面倒です。

したがって、ゲームを Web サーバー上で実行すると、これらの問題は両方とも解決されますが、新たな問題が発生します。Web は本質的にステートレスです。私が知る限り、スレッド化されたプログラム フローをステート マシンに変換し、各要求の開始時にデータベースから状態を取得し、要求ハンドラーの最後で変更された状態をデータベースに格納する必要があります。 . これは、カスタム ソケット サーバーを作成するよりもさらに面倒に思えます。だから私の質問は、これを達成するための痛みのない方法はありますか? 理想的には、上記の単純な疑似コードをほとんど変更せずに維持できるソリューションがあるでしょう。すべての言語および/またはプラットフォームでの提案をお待ちしています。

4

1 に答える 1