昔書いて公開していなかったmdが転がっていたので供養。 一応今の環境で手順通りにやっても動かせたので大丈夫かと。
Windows+VisualStudio+SDL2でゲーム開発する本を読んでいた際に、
Ubuntuでもビルドできる環境を作れないか試したくなった時書いた備忘録。
前提
- Ubuntu18.04LTS
- Eclipse
- SDL2がインストールされている状態(リンク先参照)
EclipseをUbuntuにインストールする方法も色々あるけど今回はSnapストア(ソフトウェアセンター)から入れた。
日本語化したいのならこれだけだと不十分だと思う。
他に必要なソフトはその都度入れる(基本的にツールをaptで入れるだけなので詰まらないはず)
SDL2の導入は参考資料[1]を見ること。インクルードパス等ディレクトリの設定もこれに準拠する。
以下手順はC++を使う内容なのでCで開発する場合は設定項目を適宜読み替える。
(基本的に同じ画面に設定箇所はあるので)
手順
- Eclipseの"File"->"New"->"C/C++ Project"で適当なプロジェクトを作成する。
- プロジェクトエクスプローラ上のプロジェクトを右クリックして"Properties"を開く。
表示されたウィンドウの左ペインから"C/C++ Build"->"Settings"を開く。 - 小ペインから"GCC C++ Compiler"->"Includes"を選択。
"Include paths (-l)"にSDL2のインクルードパス/usr/local/include/SDL2
を設定する。 - 小ペインから"GCC C++ Compiler"->"Includes"を選択。
"Libraries (-l)"にSDL2
SDL2main
を設定する。
"Library search path (-L)"に/usr/loca/lib/
を設定する。 - 下記のサンプルコードを作成して、"Project"->"Build Project"でビルド。実行すると灰色の画面が表示される。
Escキーで終了。ついで(?)にWASDキーの入力も受け付けてる。
サンプルコード
#include "SDL2/SDL.h" #include <string> void input(bool&); int main(int argc, char** argv) { SDL_Init(SDL_INIT_VIDEO); SDL_Window* window = SDL_CreateWindow("サンプル", 30,30,640,320, 0); SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); SDL_SetRenderDrawColor (renderer, 127, 127, 127, 255); // 灰色で塗りつぶし SDL_RenderClear(renderer); SDL_RenderPresent(renderer); bool isRunning = true; while(isRunning) { input(isRunning); } return 0; } void input(bool& isRunning) { SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: isRunning = false; break; } } const Uint8* state = SDL_GetKeyboardState(NULL); if (state[SDL_SCANCODE_ESCAPE]) { isRunning = false; } else { std::string str; if(state[SDL_SCANCODE_W]) { str = "↑"; } else if(state[SDL_SCANCODE_A]) { str = "←"; } else if(state[SDL_SCANCODE_D]) { str = "→"; } else if(state[SDL_SCANCODE_S]) { str = "↓"; } if(str.size() != 0) { SDL_Log("入力内容: %s", str.c_str()); } } }
ログ
"Build Project"した時のログ。ここでエラーが出るときは上記のInclude, Libraryの指定がミスってる可能性大。
20:07:08 **** Incremental Build of configuration Debug for project sdl_test_project **** make all Building file: ../Main.cpp Invoking: GCC C++ Compiler g++ -I/usr/local/include/SDL2 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Main.d" -MT"Main.o" -o "Main.o" "../Main.cpp" Finished building: ../Main.cpp Building target: sdl_test_project Invoking: GCC C++ Linker g++ -L/usr/local/lib/ -o "sdl_test_project" ./Main.o -lSDL2 -lSDL2main Finished building target: sdl_test_project 20:07:10 Build Finished. 0 errors, 0 warnings. (took 1s.671ms)
実行結果
灰色(127. 127. 127, 255)で塗りつぶされたウィンドウが表示される。
何故かウィンドウのタイトルに謎の「`」が付いてしまっている。調査中(2020/07)
参考資料
- SDL 2.0をUbuntuマシンにインストールする
- Sanjay Madhav 著, 吉川邦夫 訳/今給黎隆 監修 『ゲームプログラミングC++』 翔泳社. 2018