💡 프로그래밍 언어 세대
기계어 (1세대) → C (2세대) → C++ (2.5세대) → Java, C# 등 (3세대)
갈수록 편의성 생상성 Up, 권한 Down (하드웨어에 직접 간섭할 수 있는 권한을 잃어버렸다)
고급언어는 결국 기계어로 번역된다.
세대가 증가할수록 결국 숨겨져 있지만 실행되는 기계어의 줄 수가 늘어난다.
따라서 번역이 끝났을 때 기계어 양이 적은 C++이 빠르다.
⇒ 게임은 1프레임도 중요하기 때문 (속도)
그렇다면 속도가 중요한데 C는 왜 안될까?
⇒ 게임은 프로젝트가 거대하기 때문 (생산성)
언어의 생산성은 인간을 생각한 직관적인 문법을 갖출 때 성립한다.
C++은 객체지향적 언어로써 게임 제작 시 생산성 측면에서 유리하다.
결국 C++은 속도와 생산성 사이에서 밸런스를 맞추고 있기 때문에 게임 제작에 적합한 편이다.
그렇다면 어떻게 C++을 시작해야 할까?
답은 Visual Studio (Windows) 이다.
e.g. 만약 LOL을 만들고 싶다면…
LOLItemEditor.exe ⇒ 게임 내 아이템을 만들고 데이터화 시키는 .exe 파일 (하나의 프로젝트)
LOLChampEditor.exe ⇒ 게임 내 챔피언들을 만들고 데이터화 시키는 .exe 파일 (하나의 프로젝트)
…(그 외 여러 프로젝트들)
LOL.exe ⇒ 그렇게 만들어진 아이템과 챔피언을 조작해서 실제 게임을 하는 게임 클라이언트 (하나의 프로젝트)
F5 ⇒ 컴파일, .exe 파일 생성
📢 컴파일 후에는 아래의 출력창을 꼭 확인하자!
타인에게 질문할 때에는 출력창에 뜬 에러와 함께 질문해야 한다.
📢 가급적 2시간에 한번씩 커밋하자!
이 때 에러가 없는 상태에서 커밋하는 것이 좋다.
만약 왼쪽 하단의 Git 창이 없어졌다면? '상단 메뉴 → 보기 → Git 변경 내용'
💡 컴파일 4단계
전처리기 / 컴파일러 / 어셈블러 / 링커
전처리문
⇒ 컴파일이 되기 이전에 처리된다.
⇒ 실질적인 코드와 관련이 없거나(1) 코드로 치환되어야 하거나(2)
#include <iostream>
⇒ C++의 기반코드는 윈도우에 저장되어 있고, VS에서 그 위치에 들어 있는 iostream이라는 파일을 사용하겠다고 말하는 것e.g. 몬스터 1마리와 플레이어 1명이 싸운다.
게임은 모든 것을 수치로 표현
싸운다 ⇒ 행동 ⇒ 함수
공격력 ⇒ 상태 ⇒ 변수
e.g. int Att = 10;
;
: 변수의 선언이 끝났음을 표시e.g. 아래와 같은 코드를 실행시키는 경우
#include <iostream>
// 치환되는 전처리문
int main() // 진입점
{ // 코드 시작
std::cout << "Hello, World!\n";
return 0;
// 코드 끝
}
프로그램(.exe) 실행 → 하드에서 램에 복사되어 올라감 → 프로세스가 됨 → 코드의 시작부터 끝까지 실행 → 램에서 프로세스의 메모리 삭제
프로그램 ⇒ 실행되면 어떠한 일을 할 것이다 e.g. 67KB
프로세스 ⇒ 실행되어 어떠한 일을 했다 e.g. 512KB
#include <iostream>
int main()
{
while (true) {
}
} // 실행시켰을 때 종료되지 않는 프로세스
// 이를 통해 램에 올라간 프로세스가 소모하는 메모리 확인 가능
💡 프로세스의 구조
코드영역 / 데이터영역 / 힙영역 / 스택영역
e.g. 아래와 같은 코드를 실행시키는 경우
int main()
{
int Att = 10;
return 0;
}
하드에 있는 .exe가 실행됨
→ 프로그램의 코드가 램에 올라간 프로세스의 코드영역으로 복사됨
→ 스택영역에 Att라는 공간이 생김
→ Att에 넣어줄 리터럴 값을 코드영역에서 가져옴
→ 대입연산자의 연산 코드를 코드영역에서 가져옴
→ CPU에서 Att라는 메모리에 10의 메모리를 보내고 복사 연산자를 보내 Att에 10을 집어넣음
📢 기억해두면 좋은 VS단축키 & 정보
- Shift + Up or Down ⇒ 드래그와 같은 효과
- 범위 선택 + Alt + Up or Down ⇒ 범위 통째로 윗줄 또는 아랫줄로 이동
- Ctrl + K+ C ⇒ 주석
- 파일명 위에 커서 + Ctrl + Shift + G ⇒ 파일 열기?
(iostream과 같은 파일 내용 확인 가능)- 파일명 우클릭 → 상위 폴더 ⇒ 파일의 위치 확인 가능
📚 보충공부 하고 싶을 땐 여기서!
0. CPlusPlus.com ⇒ C++ 제작자들이 만든 포럼
1. msdn ⇒ 마이크로소프트 개발자 네트워크
2. 위키백과 or C++ 파워유저 블로그
3. 블로그 ⇒ 올린 날짜 꼭 확인하기
4. ChatGPT ⇒ 초심자일수록 진위여부를 알아내기 어렵다(…)