게임 엔진이란건 어떻게 만드는 건가요?

visual00의 이미지

안녕하세요 컴퓨터와 게임개발에 관심이 많은 한 학생입니다.

개인적으로 공부하면서 항상 궁금한 점이

"게임엔진 이란건 어떻게 만들까?" 입니다.

제겐 게임엔진이란 정말 놀랍고 신기한 프로그램입니다.

게임엔진이란 것은 자기 자신이 프로그램임에도 불구하고

다른 프로그램(게임)을 만들 수 있습니다.

또한 스크립트 언어라는 것을 가끔씩 내장하여

자신의 기능을 확장한다니 정말 멋집니다.

다른 프로그램을 만들어주는 프로그램이라 이런건 과연 어떻게 만들까요?

일반적인 프로그래밍 입문서들을 보면

프로그래밍 언어를 기계어로 번역해주는 컴파일러를 통해서

실행 파일을 만든다고 적혀있는데

게임엔진을 만든다는 것은 컴파일러를 만드는 것과 같은 건가요?

그렇다면 게임엔진을 만들기 위해선 컴파일러를 제작하는 방법부터 파고들어야 할까요?

지식이 부족하다 보니

제가 너무 두서없고 뜬금없는 질문을 막 던졌네요 죄송합니다.

.
.

그리고 또 뜬금없지만

KLDP의 모든 개발자분들 새해 복 많이 받으세요

pynoos의 이미지

일단 게임 엔진 하나를 잘 써보시는 것이 좋을 것 같네요.

예를 들면 cocos2d-x 같은 오픈소스 엔진을 분석해보는 것도 좋으리라 생각합니다.

http://www.cocos2d-x.org/download

visual00의 이미지

오오 감사합니다. 참고하겠습니다.

anisky7의 이미지

프레임워크란 쉽게 생각하면
C언어 라고 보시면 됩니다.
컴퓨터는 01밖에 못알아들어서 이진법으로 코딩해야하지만...
엄청난 노가다겠죠...그래서 나온게 어셈블리어
발전한게 C언어 입니다.

C언어로 모니터에 문자 출력할려면 코드몇줄만 써주면 되죠.
기존에 누군가가 코딩해서 컴파일 해놓은 라이브러리를 사용하기 때문입니다.

printf 문자출력 라이브러리입니다.
scanf 입력 받는 라이브러리입니다.

위2가지 라이브러리를 묶어서 텍스트 게임엔진이라고 해도 됩니다.
문자 입출력이라는 핵심기능을 미리 만들어 놓고 이제 만들려는 게임에 따라
만들면 되겠죠.

하지만 현대 게임은 GUI를 사용하고 3D게임이 많아서
그런 여러 기능들을 만들어 묶으면 그게 게임엔진이에요.

visual00의 이미지

제가 엔진이 마치 컴파일러와 같이 실행파일을 만들어주는
마법의 도구라고 생각하고 있었는데 이게 잘못된 생각이였군요
엔진의 정의가 무엇인지 생각을 다시 생각해보게 되었습니다.
답변 감사합니다 ^^

익명 사용자의 이미지

정의에 따라 조금 다를 수 있습니다만, 요즘 나오는 유니티, cocos2d 등과 달리
예전으로 치면 게임브리오, 초기 언리얼 엔진, 퀘이크 엔진 등의 엔진들은
지금 말씀하시는 엔진과는 조금 다릅니다.

위의 것들은 사실상 가장 핵심적인, 렌더러 부분만 강조된 엔진이고
실질적으로 렌더링 엔진이라고 봐도 무방합니다만 예전엔 이런 엔진을 구입해서 사용했습니다.
(물론 지금도 사용하고 있는 경우도 많습니다.)

그 경우 그냥 엔진 소스 자체를 가져다가 붙여서 쓰는 방식이 대부분이었고
이러면 말씀하신 것과 같은 일은 없습니다.

게임 엔진이 아니라 RPG쯔꾸르 같은 것만 봐도 신기하실 것 같습니다.
왜냐면 결과적으로 지금 생각하시는 거나 RPG쯔꾸르나 완전히 동일한 원리입니다.

익명 사용자의 이미지

언리얼 엔진이나...
유니티 엔진 보면...
멀티 플랫폼을 지원하기도 하고...
컴파일 하고나면 별도의 실행 파일이 나오는데...
게임 엔진을 만들때 컴파일러가 포함된건가요?
정말 궁금합니다... 프로그래밍을 애매하게 알고 있다보니 더 햇갈리기도 한거 같습니다...
정말 알고 싶어용 자세히 알려주세용 ㅠㅠ;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.