wdnuki
@wdnuki (和狸)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ユーザーにプログラミングさせるゲームを作りたい

解決したいこと

ユーザーにプログラミングさせるゲームを作りたいです。
何で(何の言語で)実現(実装)するのが良いでしょうか。

作りたいゲーム

Webにてユーザーがコード(JavaScript?)を書き、
そのコードをアップロードすることでプレイヤーの行動が決まる。
例えばオセロや将棋のようなボードゲームを想像しています。

例)オセロの場合
今置けるマスのうち最も裏返せる枚数の多いマスに置くプログラム
vs
角や辺を優先的に置くプログラム
といった対戦をさせたいです。

補足

ゲームのグラフィックにはこだわりは少ないです。
レンタルサーバを借りるイメージはしています。
ゲームの仕様上、スマホからプレイ/アクセスできなくても問題ないです。

0

2Answer

何を実装するにしても,汎用的に用いられるスクリプトエンジンで未知のプログラムを動作させるという行為は,必然的にセキュリティ上重大な脆弱性を持つということになります.
少なくとも,変なものをサーバで動かさないことを最優先に考えるべきです.

シンプルなボートゲームで所謂botを許可する程度であれば,盤面情報等最低限の情報のみをサーバとクライアントでやり取りする仕組みを作れば,ユーザ側も好きな言語で自由に開発できると思われます(先述のような脆弱性がすべてなくなるわけではないので,対策は必要です).
プログラミングができる環境を用意するのではなく,プログラミングが使える環境さえ用意してしまえば十分です.

教育目的とかでプログラミングをさせながらプレイさせたいというような場合は,それなりに大変な準備をすることになります.

2Like

Comments

  1. プログラミングさせながらプレイさせるゲームとして,参考までに例を置いておきます.

    https://www.codingame.com/ide/puzzle/onboarding

    こちらのonboardingというシューティングゲームのようななにかは,
    エネミーの情報を標準入力から受け取って,攻撃対象を標準出力で指定するという流れになってます.

    有名どころの言語はなんでも使えますが,ユーザが使用する機能は標準入出力だけなので非常にシンプルです.
    ユーザに提供する機能を明確化して,それ以外の変なことはさせないことが大事です.
    言語自体の選定は,早くてもそれが済んでからかと思います.
  2. @wdnuki

    Questioner

    お返事が遅くなりました。
    ご丁寧に回答ありがとうございます。
    セキュリティ面を考慮できていませんでした。
    検討してみます。

ユーザにプログラムを書かせるということは、ユーザはそのプログラム言語を知っていることが前提になります。多くのユーザに遊んでほしいとすると人気のある(多くの人が知っている)言語でないといけないということです。javascriptやpythonが最初のターゲットになると思います。

あと、ユーザはそのプログラムのデバッグをしたくなるはずです。何か開発環境みたいなものが欲しくなる気がします。Webブラウザ上でデバッグできる言語だと楽な可能性があります。
scratchのような子供向けの言語がよい可能性もあります。

他の人が指摘しているように、できることを限定して(ネットワークとかデータベースとかを直接触らせないようにして)入出力を極力単純にするのが良いでしょう。

1Like

Comments

  1. @wdnuki

    Questioner

    お返事が遅くなりました。
    ご回答ありがとうございます。
    検討してみます。

Your answer might help someone💌