Mac M1에서 Visual Studio Code를 사용해 2D 게임을 개발하려면, 아래와 같은 환경을 추천해!

추천 라이브러리

  1. SDL2 (Simple DirectMedia Layer)
    • 크로스플랫폼 지원, 성능 좋고 학습 곡선이 낮음.
    • 2D 게임 개발에 최적.
  2. SFML (Simple and Fast Multimedia Library)
    • C++ 기반, 코드가 간결해서 배우기 쉬움.
    • 그래픽, 사운드, 입력 처리가 간편함.
  3. Raylib
    • 경량 2D/3D 게임 개발 라이브러리.
    • C 기반이지만 C++에서도 사용 가능.

➡ SDL2를 추천! 이유는 M1에서도 안정적으로 동작하고, 자료가 많아서 배우기 좋아.


개발 환경 설정 (Mac M1 + VS Code + SDL2)

  1. Homebrew 설치 확인
  2. sh
    복사편집
    brew update brew install sdl2 sdl2_image sdl2_mixer sdl2_ttf
  3. VS Code 설정
    • C++ Extension Pack 설치
    • CMake & Make 설치 (brew install cmake make)
  4. 간단한 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 기준)

g++ -std=c++17 main.cpp -o game -lSDL2
./game
 

1. 프로젝트 구조

/sdl2_game/
│── .vscode/
│   ├── tasks.json
│   ├── launch.json
│── main.cpp
│── Makefile (선택 사항)

2. main.cpp 코드 수정 (Visual Studio Code 환경용)

#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;
}

3. Visual Studio Code 설정 (.vscode/tasks.json)

이 설정을 추가하면 VS Code에서 직접 빌드 & 실행 가능해!

📌 .vscode/tasks.json 생성 및 설정

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 생성 및 설정

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. 실행 방법

  1. 빌드 (Ctrl + Shift + B)
    • "Build SDL2 Game"을 선택하면 빌드됨.
  2. 실행 (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

+ Recent posts