League Of Legends - Link Select '게임 개발' 태그의 글 목록
본문 바로가기
반응형

게임 개발13

[Unreal 02] Modeling Mode 언리얼 엔진 공식 문서와 coloso : 윤규철 님의 강의를 참고하여 작성되었습니다.언리얼 5.0.3을 사용하고 있습니다.   언리얼에서는 자체적으로 모델링 에디터를 제공하여 사용자가 직접 3D 지오메트리를 만들고, 편집할 수 있도록 제공하고 있다.우선 모델링 모드를 접근하려면 아래의 화면에서 모드 선택 (Select Mode) 드롭다운을 클릭하여 모델링(Modeling)을 선택하여야 한다. 혹은 단축키 Shift+5을 누르면 즉시 전환된다.만약 이 작업이 되지 않는다면 아래와 같은 작업을 진행해준다. 이 모드 드롭 다운에 표시되지 않으면 플러그인에서 에디터가 활성화되어 있는지 확인해야 한다. 편집(Edit) > 플러그인(Plugins) > 모델링 툴 에디터 모드(Modeling Tools Editor .. 2024. 12. 8.
[01] 로블록스 기본 기능 및 LUA 기초 모음 겜공을 살아온 나에겐 로블록스 정도는 껌이지.. 껌이지.. 껌이야.. 껌일걸..?해보자고..... 가보자고......  로블록스 스튜디오를 실행한 후 '새 파일'을 선택하여 신규 프로젝트를 만들어보자.    로블록스 UI 설명은 검색하면 많이 나오니 궁금하면 찾아보도록 하자.일단 핵심으로 알아야 할 것은 아래와 같다. WSAD : 카메라 이동QE : 카메라를 위 아래로 이동F : 파츠 선택 후 F키 누르면 자세히 보기오른쪽 클릭 후 드래그 : 살펴보기휠 : 줌 인/아웃     파트라는게 존재하는데 이를 사용해서 맵에 사진과 같은 구조물을 만들 수 있다. 이 파트를 배치하게 되면 우측 탐색기에 Part라고 뜨게 되는데이 파트에 마우스를 갖다대어 옆에 뜨는 + 버튼을 눌러서 스크립트를 만들 수 있다.    .. 2024. 9. 30.
[winAPI 20] Tool 이제 Tool 씬을 작업해보도록 하겠다. 타일을 이용해 맵을 사용하는데 필요한 씬이다. 일단 기존 씬 매니저에서 START 씬이 아닌 TOOL 씬으로 진입하도록 하겠다. // SceneManager.cppvoid SceneManager::init(){ // .... currScene = arrScene[(UINT)SCENE_TYPE::TOOL]; // 수정 currScene->Enter();}  이제 Tile 클래스를 사용할 것인데 아래의 텍스쳐를 이용할 것이다. 보통 타일은 한 변의 크기가 64비트로 되어있는 것을 자주 사용한다.  // define.h#define TILE_SIZE 64 // New!!enum class GROUP_TYPE { DEFAULT, TILE, // New!! PLAY.. 2024. 6. 11.
[winAPI 16] Scene & Object 씬 전환 (화면 전환) 씬 변경을 구현해보자. 씬 전환은 씬 관리자가 관리를 해주어야 하지 않을까?씬 변경 또한 이전 프레임과 다음 프레임의 장면이 다르기에 이벤트 발생을 해서 처리해주어야 한다. 일단 새로운 씬을 하나 만들자. // Scene_Tool.h#pragma once#include "Scene.h"class Scene_Start : public Scene {public: Scene_Start(); ~Scene_Start(); virtual void Enter(); virtual void Exit();};// Scene_Tool.cpp#include "pch.h"#include "Scene_Tool.h"#include "KeyManager.h"Scene_Tool::Scene_Tool(){.. 2024. 6. 10.
[winAPI 15] Event Manager 저번 시간에 설명했듯 이번 포스팅에선 이벤트 관리자를 만들어보도록 하겠다.그 전에 저번 시간에 Object에 이름 변수(strName)를 넣어주었는데 그와 관련된 인터페이스 함수를 작성하도록 한다. // Object.h // 이름 관련 함수 설정 void SetName(const wstring& _str) { strName = _str; } const wstring& GetName() { return strName; }  본격적인 EventManager 클래스를 작성하도록 하자. 일단 이벤트 타입에는 어떤 것이 있을까? 이벤트는 어떠한 코드 기점으로 이전 프레임에는 없었는데 다음 프레임에는 생기는 경우를 의미한다. 우리의 프로그램에선 미사일 생성이 해당한다. (이전 프레임에는 없었는데 다음 프레임에는 생.. 2024. 6. 10.
[winAPI 14] Collider(3) Collider 충돌체마다 아이디를 고유로 주려고 하는데 만약 객체가 복사 되어 생성되는 경우라면 어떻게 해야 할까? 기본 복사 생성자는 그대로 복사해주기 때문에 ID가 중복될 수 있음. 이는 우리가 구현하고자 하는 목표에 위배되기 때문에 깊은 복사 필요가 필요하다. // Collider.hclass Object; class Collider {private: static UINT nextID; Object* owner; Vec2 offsetPos; Vec2 finalPos; Vec2 scale; UINT iID; UINT col;public: Collider(); Collider(const Collider& _ori); // 복사생성자 ~Collider(); Collider& operator =.. 2024. 6. 9.
[winAPI 13] Collider(2) 갤러그 같은 게임에서의 플레이어 충돌 박스는 보통 안쪽으로 되어, 미사일이 날라와도 피할 수 있게 구현되기 때문에 아래의 사진같이 수정하도록 하겠다. 추가로 몬스터에도 충돌 박스를 그리는 작업을 진행하였다.  // Player.cpp 수정Player::Player() : tex(nullptr){ // Texture Loading tex = ResManager::Instance()->LoadTexture(L"PlayerTex", L"Texture\\Player.bmp"); CreateCollider(); // 충돌 필요한 애들 다 넣어주기. GetCollider()->SetOffsetPos(Vec2(0.f, 10.f)); // 수정 GetCollider()->SetScale(Vec2(40.f, 50.f)).. 2024. 6. 8.
[winAPI 12] Collider(1) 충돌 처리를 해보장..게임에서 충돌은 매우 필수적인 부분이다. 충돌은 단순히 부딪쳤다는 하나의 사실을 구현하는 것이 아니라 여러 조건이 필요하다. 아래에서 이 조건에 따라 세 가지 이벤트로 나눌 것이다.  오브젝트에 충돌이 필요한 것이 있고, 아닌 경우(배경, UI 등)가 있다. 오브젝트 내에서 Collider 와 Non-Collider로 나누어 상속을 사용해 구현하면 확장성이 떨어진다. Non-Collider 중에서 일부만 충돌이 필요한 경우가 생기면 구조를 다 뜯어 고쳐야 한다는 것. 그래서 상속 구조의 계층 구조가 깊다면(상속-상속-상속...) 이런 부분에서 문제가 생길 확률이 높다. 이런 멤버는 항상 갖고 있되 필요하면 쓰고, 아니면 안 쓰도록 구현하면 된다. 이런 애들을 component라고 분.. 2024. 6. 6.
[winAPI 11] Resource Manager 리소스 매니저를 만들어보자. // Resource.h#pragma onceclass Texture;class ResManager { SINGLE(ResManager);private: map mapTex;public: Texture* LoadTexture(const wstring& _key, const wstring& _path); Texture* FindTexture(const wstring& _key);};// Resource.cpp#include "pch.h"#include "ResManager.h"#include "PathManager.h"#include "Texture.h"ResManager::ResManager(){}ResManager::~ResManager(){ map::iterator ite.. 2024. 6. 6.
728x90
반응형