« ^ »

Minetestのメニュー画面にサーバー名を表示させない

所要時間: 約 2分

Minetestのゲームサーバーをホスティングしていて、それを用いてゲーム配信をしている。そのサーバーは公開サーバーではないため、アドレスなどを秘匿しておきたい。しかしゲーム画面には表示されてしまう。ゲーム配信でメニュー画面を表示する際、サーバー情報が写り込んでしまうことが問題となった。そこでソースコードを書き換えて、サーバー情報を表示しないように修正する。

特に難しいことはない。該当箇所のコードを書き換えてビルドすればよい。ソースコード内の問題となる箇所を特定し、直接書き換えた。MinetestはC++で実装されているが、この程度の修正であれば恐れる必要はない。落ち着いてやればできる。

diff --git a/src/client/game.cpp b/src/client/game.cpp
index 6a4bff61a..f53426251 100644
--- a/src/client/game.cpp
+++ b/src/client/game.cpp
@@ -4285,8 +4285,10 @@ void Game::showPauseMenu()
        if (!simple_singleplayer_mode) {
                Address serverAddress = client->getServerAddress();
                if (!address.empty()) {
+                       // os << mode << strgettext("Remote server") << "\n"
+                       //              << strgettext("- Address: ") << address;
                        os << mode << strgettext("Remote server") << "\n"
-                                       << strgettext("- Address: ") << address;
+                                       << strgettext("- Address: ") << "Hello, This is Minetest world!";
                } else {
                        os << mode << strgettext("Hosting server");
                }

コードを直接修正した後、以下の手順でcmakeを実行する。ここではクライアントのみビルドする。

mkdir build
cd build
cmake .. \
  -DBUILD_CLIENT=TRUE \
  -DBUILD_SERVER=FALSE \
  -DBUILD_UNITTESTS=FALSE \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_OSX_DEPLOYMENT_TARGET=12.5 \
  -DCMAKE_FIND_FRAMEWORK=LAST \
  -DCMAKE_INSTALL_PREFIX=../build/macos/ \
  -DRUN_IN_PLACE=FALSE \
  -DENABLE_GETTEXT=TRUE \
  -DRUN_IN_PLACE=0

リポジトリのルートディレクトリに戻り、ビルドする。

cd ..
make -j$(nproc)

make install まで実行すると、build/macos配下にminetest.appが生成される。

make install

アプリケーションを起動し、サーバー情報に「Hello, This is Minetest world!」 と表示されることを確認した。

https://res.cloudinary.com/symdon/image/upload/v1670761503/blog.symdon.info/1670459044/screenshot_2022-12-11_21.24.07_kvwdis.png