← 최신 논문
⚡ electrical engineering

Using Assembly Language for Creating Games

이 논문은 디버깅 및 테스트를 위해 Visual Studio 2015 환경을 활용한 x86 어셈블리 언어로 아케이드 게임 '아르카노이드'를 구현하여 어셈블리 프로그래밍의 가능성과 유용한 기법을 제시합니다.

원저자: Haris Turkmanović, David Vukoje, Aleksandra Lekić, Milan Prokin

게시일 2026-04-24
📖 3 분 읽기☕ 가벼운 읽기

원저자: Haris Turkmanović, David Vukoje, Aleksandra Lekić, Milan Prokin

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

이 논문은 **'아르카노이드 (Arkanoid)'**라는 고전 게임을 **어셈블리 언어 (Assembly Language)**로 직접 만들어 본 프로젝트에 대한 이야기입니다.

일반적인 프로그래밍 언어 (C, Python 등) 가 마치 "레고 블록을 조립하는 것"이라면, 어셈블리 언어는 **"레고 한 조각 한 조각을 손으로 직접 다듬고 붙이는 것"**과 같습니다. 이 논문은 그 정교한 손기술로 어떻게 게임을 만들 수 있는지, 그리고 그 과정에서 어떤 재미있는 아이디어들이 숨어있는지 설명합니다.

핵심 내용을 일상적인 비유로 쉽게 풀어보겠습니다.


1. 왜 하필 어셈블리 언어인가? (직접 조종하는 비행기)

대부분의 사람들은 게임을 만들 때 고수준 언어를 쓰는데, 이는 컴퓨터가 알아서 많은 일을 대신해 주기 때문입니다. 하지만 이 논문은 컴퓨터의 '뇌' (CPU) 와 직접 대화하는 어셈블리 언어를 선택했습니다.

  • 비유: 고수준 언어는 자율주행 자동차를 타는 것과 같습니다. 목적지만 입력하면 차가 알아서 갑니다. 반면, 어셈블리 언어는 수동 기어와 수동 조향의 오토바이를 타는 것입니다. 엔진의 모든 소음, 바퀴의 마찰, 핸들의 미세한 움직임까지 운전자가 100% 통제할 수 있습니다.
  • 장점: 컴퓨터가 알아서 해주는 일이 없기 때문에, 프로그램이 매우 빠르고 가볍습니다. 하지만 운전자가 (개발자가) 모든 것을 책임져야 하므로 실수하면 바로 사고가 납니다.

2. 게임의 무대: 윈도우 콘솔 (화려한 타일 벽)

이 게임은 화려한 그래픽 카드가 아니라, 윈도우의 **텍스트 콘솔 (명령 프롬프트 창)**에서 돌아갑니다.

  • 비유: 콘솔 화면은 수천 개의 작은 타일이 붙어 있는 벽이라고 생각하세요. 보통은 글자나 숫자만 쓰지만, 이 게임은 이 타일들의 색깔모양을 조종해서 그림을 그립니다.
  • 작동 원리: 개발자는 컴퓨터에게 "이 타일에는 빨간색 공을 그려줘", "저 타일은 파란색 벽돌로 바꿔줘"라고 직접 지시합니다. 이를 위해 윈도우의 '시스템 함수'라는 통역사를 빌려와서 하드웨어 (키보드, 화면) 와 대화합니다.

3. 게임의 핵심 기술들 (마법 같은 아이디어)

이 게임은 단순해 보이지만, 어셈블리 언어로 구현하기 위해 몇 가지 창의적인 '마법'을 사용했습니다.

A. '빅 문자 (Big String)'와 비트맵 (거대한 픽셀 아트)

게임의 제목이나 점수판에 쓰이는 글자는 일반적인 작은 글자가 아닙니다.

  • 비유: 일반적인 글자는 종이 한 장에 인쇄된 것이라면, 이 게임의 글자는 **수천 개의 작은 벽돌 (타일)**을 쌓아 만든 거대한 조형물입니다.
  • 원리: 개발자는 '벽돌이 채워진 타일'과 '빈 타일' 두 가지만 준비해 두었습니다. 이 두 가지를 조합해서 'A', 'B', '1', '2' 같은 거대한 글자 모양을 만들어냅니다. 마치 레고로 글자를 조립하는 것과 같습니다.

B. 충돌 감지 (공이 벽돌을 때리는 순간)

공이 벽돌에 부딪혔을 때, "어느 면에 부딪혔는지"를 정확히 알아내야 공이 튕겨 나가는 방향을 계산할 수 있습니다.

  • 비유: 공이 벽돌에 부딪히면, 벽돌은 **"아, 공이 내 정면 (위쪽) 에 왔구나!"**라고 외칩니다.
  • 작동: 프로그램은 공의 현재 위치와 이전 위치를 비교하여, 공이 벽돌의 위, 아래, 왼쪽, 오른쪽 중 어디에 닿았는지 4 가지 경우 중 하나를 찾아냅니다. 그 정보를 바탕으로 공을 올바른 각도로 튕겨냅니다.

C. 속도 조절 (시간 벡터)

게임 속도가 너무 빠르면 따라가기 힘들고, 너무 느리면 지루합니다.

  • 비유: 게임 루프 (반복 작업) 는 심장 박동과 같습니다. 보통은 매 박동마다 모든 것을 업데이트합니다. 하지만 이 게임은 **"이 단계는 3 박동 기다렸다가 움직여라"**라고 지시합니다.
  • 효과: 벽돌은 3 박동마다 움직이고, 패들은 1 박동마다 움직이게 설정하면, 벽돌은 느리게, 패들은 빠르게 움직이는 효과를 낼 수 있습니다. 마치 음악의 템포를 조절하듯 게임의 속도를 미세하게 조절하는 기술입니다.

4. 결론: 왜 이 프로젝트가 중요한가?

이 논문은 단순히 게임을 만든 것을 넘어, 컴퓨터의 가장 깊은 곳 (하드웨어) 을 이해하는 교육적 가치를 보여줍니다.

  • 교육적 의미: 이 프로젝트에 쓰인 아이디어 (충돌 감지, 비트맵 그리기, 속도 제어) 는 거대한 컴퓨터뿐만 아니라, 작은 마이크로칩 (임베디드 시스템) 이나 FPGA 같은 작은 장치에서도 똑같이 적용할 수 있습니다.
  • 미래: 이 게임은 교육용으로 쓰일 뿐만 아니라, 앞으로 메뉴를 추가하거나 더 복잡한 기능을 넣어서 업그레이드할 수 있는 튼튼한 기초를 닦아두었습니다.

한 줄 요약:
이 논문은 **"컴퓨터의 모든 것을 직접 조종하는 고난도 기술 (어셈블리) 로, 텍스트 화면이라는 제한된 공간에서 어떻게 화려하고 재미있는 게임을 만들어낼 수 있는지"**를 보여주는 멋진 사례입니다. 마치 작은 공방에서 정교한 시계를 만들어내는 장인 정신과 같습니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →