kisskit: C로 게임 개발 단순화하기

10960 단어 cprogramminggamedevsdl
저는 1980년대에 BASIC에서 프로그래밍을 하며 자랐고 그래픽과 사운드를 위한 매우 간단한 API를 즐겼습니다. 예를 들어 다음은 선과 원을 그립니다.

MOVE 100, 100
DRAW 300, 200
CIRCLE 300, 200, 50




도우미 함수 없이 브라우저에서 HTML을 사용하는 최신 JavaScript에서 동일한 작업을 수행하려면 다음과 같이 작성해야 합니다.

<canvas id="myCanvas" width="800" height="600"
 style="width: 800px; height: 600px; background: black;"></canvas>
<script>
const canvas = document.getElementById('myCanvas');
const context = canvas.getContext('2d');

context.strokeStyle = 'white';

context.beginPath();
context.moveTo(100, 100);
context.lineTo(300, 200);
context.stroke();

context.beginPath();
context.arc(300, 200, 50, 0, 2 * Math.PI, false);
context.stroke();
</script>


그리고 SDL2_gfx가 있는 C에서는 다음과 같은 것이 필요합니다.

#include <SDL.h>
#include <SDL2/SDL2_gfxPrimitives.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>

int main(void)
{
        int exit_status = EXIT_FAILURE;
        char *title = "SDL Demo";
        SDL_Window *window;
        SDL_Renderer *renderer;
        bool quit = 0;
        SDL_Event e;

        SDL_Init(SDL_INIT_VIDEO);
        window = SDL_CreateWindow(title, 50, 50, 800, 600, 0);
        renderer = SDL_CreateRenderer(window, -1,
                SDL_RENDERER_ACCELERATED |
                SDL_RENDERER_PRESENTVSYNC);
        if (!renderer)
                goto error;

        SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
        SDL_RenderClear(renderer);
        lineRGBA(renderer, 100, 100, 300, 200,
                 255, 255, 255, 255);
        circleRGBA(renderer, 300, 200, 50,
                   255, 255, 255, 255);

        SDL_RenderPresent(renderer);

        while (!quit) {
                SDL_WaitEvent(&e);
                if (e.type == SDL_QUIT)
                        quit = 1;
        }

        exit_status = EXIT_SUCCESS;
error:
        SDL_DestroyWindow(window);
        SDL_Quit();
        exit(exit_status);
}


나는 내 아이들이 나보다 훨씬 더 고통받는 것을 원하지 않기 때문에 C 프로그래밍과 게임 개발을 최대한 단순화하는 데 도움이 되는 도구 세트kisskit를 준비하고 있습니다.

KISS는 "Keep it simple, stupid!"를 의미합니다. 이것은 프로그래밍을 위한 very good advice입니다.

Kisskit은 진행 중인 작업입니다. 지금까지 세 가지 주요 기능이 포함되어 있습니다.
  • 로깅 및 디버깅용 매크로
  • 라이브러리 함수를 래핑하고 오류를 확인하는 매크로
  • 백그라운드에서 SDL을 사용하여 간단한 게임을 작성할 수 있는 "basic"이라는 라이브러리

  • 다음은 로깅 및 오류 처리를 위한 매크로kiss.h를 포함하거나 포함하지 않고 작성된 간단한 프로그램comparison입니다.

    원래의 그래픽 문제로 돌아가서 basic 라이브러리를 사용하여 선과 원을 그리는 동일한 프로그램이 있습니다. 모든 SDL 상용구 코드는 배후에 숨겨져 있으며 우리의 기본 프로그램은 어린이도 작성할 수 있을 만큼 간단합니다.

    라이브러리는 필요한 기능만 재정의할 수 있도록 연결 트릭을 사용합니다. 이 경우 draw():

    #include "basic.h"
    
    void draw(void)
    {
            line(100, 100, 300, 200);
            circle0(300, 200, 50);
    }
    


    BASIC, Processing 언어 또는 p5.js 과 유사한 간단한 코드를 작성할 수 있지만 일반 C로 작성할 수 있습니다.

    다음 몇 개의 게시물에서는 이 라이브러리를 사용하여 그림을 그리고 간단한 게임을 만드는 방법을 보여드리겠습니다.

    다음 게시물: , Thalia 작성
    이전 게시물: Sam 작성
    내용물:

    좋은 웹페이지 즐겨찾기