Mac M1에서 Visual Studio Code를 사용해 2D 게임을 개발하려면, 아래와 같은 환경을 추천해!
추천 라이브러리
- SDL2 (Simple DirectMedia Layer)
- 크로스플랫폼 지원, 성능 좋고 학습 곡선이 낮음.
- 2D 게임 개발에 최적.
- SFML (Simple and Fast Multimedia Library)
- C++ 기반, 코드가 간결해서 배우기 쉬움.
- 그래픽, 사운드, 입력 처리가 간편함.
- Raylib
- 경량 2D/3D 게임 개발 라이브러리.
- C 기반이지만 C++에서도 사용 가능.
➡ SDL2를 추천! 이유는 M1에서도 안정적으로 동작하고, 자료가 많아서 배우기 좋아.
개발 환경 설정 (Mac M1 + VS Code + SDL2)
- Homebrew 설치 확인
-
sh복사편집brew update brew install sdl2 sdl2_image sdl2_mixer sdl2_ttf
- VS Code 설정
- C++ Extension Pack 설치
- CMake & Make 설치 (brew install cmake make)
- 간단한 SDL2 코드 (C++) 아래 코드를 main.cpp로 저장하고 실행하면 윈도우와 빨간색 배경을 가진 2D 화면이 표시돼.
#include <SDL2/SDL.h>
#include <iostream>
int main(int argc, char* argv[]) {
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
std::cout << "SDL 초기화 실패: " << SDL_GetError() << std::endl;
return -1;
}
SDL_Window* window = SDL_CreateWindow("SDL2 2D Game",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
800, 600,
SDL_WINDOW_SHOWN);
if (!window) {
std::cout << "윈도우 생성 실패: " << SDL_GetError() << std::endl;
SDL_Quit();
return -1;
}
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if (!renderer) {
std::cout << "렌더러 생성 실패: " << SDL_GetError() << std::endl;
SDL_DestroyWindow(window);
SDL_Quit();
return -1;
}
bool isRunning = true;
SDL_Event event;
while (isRunning) {
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
isRunning = false;
}
}
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); // 빨간색 배경
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
4. 컴파일 및 실행 (Mac M1 기준)
./game
1. 프로젝트 구조
│── .vscode/
│ ├── tasks.json
│ ├── launch.json
│── main.cpp
│── Makefile (선택 사항)
2. main.cpp 코드 수정 (Visual Studio Code 환경용)
#include <iostream>
int main(int argc, char* argv[]) {
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
std::cout << "SDL 초기화 실패: " << SDL_GetError() << std::endl;
return -1;
}
SDL_Window* window = SDL_CreateWindow("SDL2 2D Game",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
800, 600,
SDL_WINDOW_SHOWN);
if (!window) {
std::cout << "윈도우 생성 실패: " << SDL_GetError() << std::endl;
SDL_Quit();
return -1;
}
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if (!renderer) {
std::cout << "렌더러 생성 실패: " << SDL_GetError() << std::endl;
SDL_DestroyWindow(window);
SDL_Quit();
return -1;
}
bool isRunning = true;
SDL_Event event;
while (isRunning) {
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) {
isRunning = false;
}
}
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); // 빨간색 배경
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
3. Visual Studio Code 설정 (.vscode/tasks.json)
이 설정을 추가하면 VS Code에서 직접 빌드 & 실행 가능해!
📌 .vscode/tasks.json 생성 및 설정
"version": "2.0.0",
"tasks": [
{
"label": "Build SDL2 Game",
"type": "shell",
"command": "g++",
"args": [
"-std=c++17",
"main.cpp",
"-o",
"game",
"-lSDL2"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": ["$gcc"]
}
]
}
4. 디버깅 설정 (.vscode/launch.json)
📌 .vscode/launch.json 생성 및 설정
"version": "2.0.0",
"tasks": [
{
"label": "Build SDL2 Game",
"type": "shell",
"command": "g++",
"args": [
"-std=c++17",
"main.cpp",
"-o",
"game",
"-lSDL2"
],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": ["$gcc"]
}
]
}
5. 실행 방법
- 빌드 (Ctrl + Shift + B)
- "Build SDL2 Game"을 선택하면 빌드됨.
- 실행 (F5)
- 디버깅 모드로 실행됨.
'C, C++, Java' 카테고리의 다른 글
Python type() quivalent in Kotlin (0) | 2023.10.18 |
---|---|
Java의 정석 2장 (0) | 2016.12.11 |
Score cut-off C++ program (0) | 2014.09.05 |
Overriding1.cpp (0) | 2014.05.02 |
CReference2.cpp (0) | 2014.05.02 |