게임프로그래밍 31

[게임 프로그래머 입문 올인원] 산술 연산, 비교 연산, 논리 연산

* 지금 테스트 코드는 전부 전역변수 > Data 영역에서 메모리 할당 * Alt + 커서 : 세로로 블록 설정 * 대입 연산자   = * 산술 연산자   +, -, *, /, %   +=, -=, *=, /=, %=#include using namespace std;int a, b, result;int main(void){00DC1000 push ebp 00DC1001 mov ebp,esp // 대입 연산 a = 10;00DC1003 mov dword ptr [a (0DC33D0h)],0Ah b = 3;00DC100D mov dword ptr [b (0DC33C8h)],3 // + - * / % result = a + b;00D..

[게임 프로그래머 입문 올인원] 변수, 정수의 원리, 변수의 마무리

* 프로그램을 구성하는 가장 핵심 요소는 데이터와 로직 * 전역변수와 static 변수 차이(1) 전역변수(단, 다른 파일에서 접근하려면 extern 선언 필요)   프로그램 전체에서 공유(가게의 금고), 어디서나 접근 가능(2) static 변수   특정 함수에서 값을 유지(직원 통장), 함수 외부에서는 볼 수 없음(3) 전역 static 변수   특정 파일 내에서만 사용 가능한 값을 유지(지점의 비밀 금고), 다른 파일에서 접근 불가 * 공식문서_데이터 형식 범위   https://learn.microsoft.com/ko-kr/cpp/cpp/data-type-ranges?view=msvc-170 데이터 형식 범위데이터 형식 범위에 대한 자세한 정보learn.microsoft.com * 0b 2진수, ..

[게임 프로그래머 입문 올인원] 컴퓨터 구조

* CPU, RAM, SSD (1) CPU : 컴퓨터의 중앙에서 모든 데이터를 처리하는 장치 * CPU가 이해할 수 있는 명령어들의 모음을  명령어의 집합(Instruction Set) 또는 명령어 집합 구조(Instruction Set Architecture), opcode라고 한다 * CPU 명령어 체계는 CISC, RISC가 있다 (2) RAM은  4가지 영역으로 나눌 수 있다 : Code(Text) 영역, Data 영역, Heap 영역, Stack 영역 ① 코드(Code) 영역(=Text)   프로세스가 실행할 코드와 매크로 상수가 기계어 형태로 저장된 공간   CPU는 코드 영역에 저장된 명령어를 하나씩 가져와서 실행   컴파일 타임에 결정되고 중간에 코드를 바꿀 수 없게 Read-Only로 지..

[게임 프로그래머 입문 올인원] OT

강의에서 다루는 내용1. C++2. 자료구조/알고리즘3. STL4. 게임 수학5. Windows API6. 게임 서버 입문 최종 목표 : Windows API 기반으로 간단한 게임 만들기   ① 포트리스    ② 2D 로그라이크 온라인 게임 공부 환경Visual Studio 2022 커뮤니티(1) C++를 사용한 데스크톱 개발과 (2) C++를 사용한 게임 개발을 선택 후 다운로드  강의_바로가기 [게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버Rookiss | 어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘, STL, 게임 수학, Windows API, 게임 ..

[MMO Lab 1기] 싱글톤(Singleton)

** 싱글톤 : 딱 하나만 객체가 존재 ㄴ 매니저를 구현할 때, 싱글톤으로 구현한다 ㄴ static 변수를 이용한다 => static은 클래스에 종속적이다고 표현 가능 using UnityEngine; public class Managers : MonoBehaviour { static Managers s_instance; public static Managers Instance { get { Init(); return s_instance; } } public static void Init() { if (s_instance == null) { GameObject go = GameObject.Find("@Managers"); if (go == null) { go = new GameObject() { name..

[MMO Lab 1기] 매니저(Managers)

** 컨포넌트를 이용해서 기능을 세분화하여 작업함 컨포넌트는 자신만의 기능을 세분화여 들고 있지만, 범용적으로 항상 사용하는 기능도 컨포넌트로 구현할 것인가? 그렇다면 그 내용들을 어떻게 공유하고 구현할 것이며 호출할 것인가? => 그에 대한 해답 중 하나가 매니저이다. ** 매니저(Managers) : 만능형으로, 모든 기능을 종합적으로 관리하는 역할 이 기능의 핵심은 우리가 작업하는 코드 내에서 언제 언디서든 사용 가능하다는 점 ㄴ 여러 개의 컨포넌트들이 따로 떨어져 있을 때, 교류하여 작업하는 방식 ▼ 매니저 using UnityEngine; public class Managers : MonoBehaviour { // Start is called before the first frame update..

[MMO Lab 1기] GameObject vs Component

** 게임 오브젝트 > 컨포넌트, 스크립트(동작을 부여) ** 게임 오브젝트(GameObjects)는 Unity의 기초적인 오브젝트로 캐릭터, 소품, 배경을 나타냄 독자적으로 많은 것을 하기보다는 실질적 기능을 수행하는 컴포넌트(Components) 의 컨테이너 역할 ** 컴포넌트는 해당 게임 오브젝트의 동작 정의 ** 유니티 생명주기 중 Awake, Start, Update 숙지하기 ㄴ Awake : 객체를 만들때 ㄴ Start : 게임 시작 ㄴ Update : 매 프레임마다 using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; public class NewBeha..

[MMO Lab 1기] Component 패턴

** 컨포넌트(Component) : 여러 개의 프로그램 함수들을 모아 하나의 특정한 기능을 수행할 수 있도록 구성한 작은 기능적 단위 ㄴ 레고에 블록 쌓듯이 개발 ** 유니티에서 프레임? : Frame Per Second, 초당 프레임, 초당 화면에 몇 번 그려질지를 의미 using UnityEngine; public class Test : MonoBehaviour { // Start is called before the first frame update void Start() { Debug.Log("Hellow Unity"); } // Update is called once per frame void Update() { transform.Rotate(0, 1, 0); } } ** 공부할때, 참고한 블..