ved_Rony
article thumbnail
개인 프로젝트 - 터치 크래프트 (2)
Game Dev/Unity 2024. 1. 20. 22:23

프로젝트의 생성 실절적인 개발에 들어가기에 앞서, 필요한 패키지(addressable, unitask 등) 추가, 깃 연동, Github Action을 사용한 CI 구축을 하기로 마음을 먹었다. 원래는 어드레서블을 사용한 리소스 관리 시스템도 추가 할 예정이었지만, 마음에 드는 에셋을 쇼핑해야 하거니와, 아직 확실한 게임성이 안나왔기에, 추후 작업으로 미뤄 둘 예정이다. 실제로 진행하면서 사진을 찍었어야 하는데 그러지 못하였다. 이점은 반성 토록 하고, 일단 CI 추가 한 것만 올리도록 하겠다. 이전 회사에서 Game-ci를 사용하여 파이프라인을 만든 적이 있는 데, 그때와 현재 방식이 조금 달라져서 새롭게 main.yml을 만들어 줬다. on: [push, pull_request] jobs: build..

article thumbnail
개인 프로젝트 - 터치 크래프트 (1)
Game Dev/Unity 2024. 1. 20. 22:00

사이드 프로젝트의 시작 처음 게임 개발을 하고자 했을 때, 무작정 모바일 게임을 하나 만들어서 출시를 한적이 있다. 너무 조잡한 게임이었고, 언젠가 실력을 쌓아 더 좋은 게임을 만들고 싶다고 생각했다. 그리하여, 오늘 실제로 내가 만들고 싶은 게임을 직접 기획, 프로젝트 관리, 개발, 배포 등 모든 작업을 아울러서 해보자고 생각했다. 단순히 포트폴리오나 레벨업을 위한 게임이 아닌 실제 나의 아이디어와 현재 내가 낼수 있는 아웃 풋의 한계를 보고자 개발을 해보려고 한다. Touch Craft 게임 제목을 touch craft라고 정했다. 스타 크래프트와 같은 rts 게임을 모바일에서 매우 간단하고 접근성을 확 낮추어 유저들에게 간단하며, 빠르게 승부를 볼 수 있는 게임을 제공하고자 한다. 아직 게임의 전체..

article thumbnail
Unity Ecs란 무엇일까
Game Dev/Unity 2023. 12. 30. 15:47

ecs란? Unity ecs의 ecs는 entity component system으로, 기존의 component system과 다른 구조를 가지고 있다. ecs는 Dots, data oriented technology stack를 기반으로 설계된 시스템이다. 간단하게 축약하자면, 기존의 방식은 그대로 유지하되, 게임오브젝트로 작업을 하던것이entity로 수행을 하게 되는 것이다 기존 component system 기존의 component system은 우리가 생성한 gameobject에 component를 붙여서 object를 완성해 나간다. 이러한 component들은 개별로 메모리에 저장이 된다. 이때, component 저장이 되는 메모리는 랜덤한 위치에 저장이 되게 된다. 이 구조로는 많은 캐시 ..

article thumbnail
유니티 - Unity Memory Leak 이유와 관리 방법(Memory Profiler)
Game Dev/Unity 2023. 12. 1. 16:50

memory leak은 성능 저하의 원인중 하나이고, 최적화를 위해 잡아야 하는 문제들중 하나이다. unity 내부에서 memoty leak을 유발 할 수 있는 이슈중 하나로, 잔류 unity instance가 있다. 이 경우 어디서 어떤 오브젝트가 누수가 되고 있는 지 확인하기가 어렵다. 이현상에 대해서 잠깐 짚고 넘어가보자. 실제로 Unity Engine은 C#의 Managed shell과 C++로 이루어진 Native 엔진 코드로 이루어져 있다. C#에 할당된 오브젝트를 Wrapper object, C++에 할당된 오브젝트를 Native Object라고 부르겠다. 잠깐 설명하고 넘어가자면, 실질적인 오브젝트는 Native Object로 실직적인 process는 여기에 존재한다. Wrapper obe..

article thumbnail
유니티 네트워킹 - NetworkVariable vs RPC
Game Dev/Unity 2023. 10. 14. 13:07

틀린 데이터 동기화 메커니즘을 선택하면 버그가 발생할 수 있으며, 대역폭을 많이 사용하고 코드를 더 복잡하게 만들 수 있다. Netcode for GameObjects (Netcode)은 플레이어 간의 정보 동기화를 위한 두 가지 주요 방법을 제공한다. RPC (원격 프로시저 호출)와 복제 상태 (NetworkVariable) 두 가지 방법 모두 네트워크를 통해 메시지를 전송하는 데, 어떻게 메시지를 전송할지에 대한 논리와 설계는 둘 중 하나를 선택해야 한다. NetworkVariables vs RPC RPC는 순간적인 이벤트, 수신될 때에만 유용한 정보에 사용 NetworkVariables은 영구적인 상태, 순간 이상 유지되는 정보에 사용 사용할 방법을 빠르게 선택하는 방법은 자신에게 다음과 같다 : ..

article thumbnail
유니티 Field of View 구현 - 폴리곤 Mesh
Game Dev/Unity 2023. 9. 16. 17:40

유니티로 시야각 구현 using System.Collections; using System.Collections.Generic; using UnityEngine; public class FovTest : MonoBehaviour { public struct ViewCastInfo { public bool hit; public Vector3 point; public float dst; public float angle; public ViewCastInfo(bool _hit, Vector3 _point, float _dst, float _angle) { hit = _hit; point = _point; dst = _dst; angle = _angle; } } public struct Edge { public..

article thumbnail
유니티 - 멀티플레이어 게임 Lock Step 동기화
Game Dev/Unity 2023. 8. 20. 21:16

Lockstep 동기화 기법은 멀티플레이어 게임에서 사용되는 동기화 방식 중 하나이다. 완전히 동일한 로직을 바탕으로 매 프레임마다 모든 플레이어의 입력값을 동기화하고 각자 동일한 시뮬레이션을 진행한다. 많은 캐릭터와 복잡한 로직을 간단하게 동기화할 수 있다. 입력 조작과 프레임 진행만 동기화하면 게임 로직이 동기화된 상태로 진행된다. 결정론적으로 로직을 작성하는 것이 매우 어렵다. 특히 부동소수점의 처리는 하드웨어마다 매우 다르고, 옵션을 통해서 일치시키면 성능이 대폭 떨어지는 경우가 많다. 10명이하의 플레이어 게임에 사용한다. 참가자 수가 늘어날 수록 입력 패킷 도달 지연이 발생할 가능성이 크게 높아지기 때문이다. 현재 내가 개발하고 있는 게임에서 플레이어의 인풋을 히스토리 (인풋값의 리스트)를 만..

article thumbnail
GitActions Unity CI/CD 개발기 - CI 개발
Game Dev/Unity 2023. 7. 3. 12:58

GameCI를 사용한 apk 빌드 자동화 1) 라이센스 activation unity pro license인 경우 먼저, 유니티의 serial key를 받아야 한다. → XX-XXXX-XXXX-XXXX-XXXX-XXXX 와 같은 형식 repository의 settings에 secrets로 들어간다. 다음 그림 처럼 secrets를 생성해준다. 이름은 UNITY_SERIAL/UNITY_EMAIL/UNITY_PASSWORD 로 지어준다. 각각의 secret에는 각 이름에 맞는 값을 넣어준다. UNITY_SERIAL → 아까받은 serial 값 UNITY_EMAIL → unity 이메일 UNITY_PASSWORD → unity 패스워드 2. unity personal license인 경우 pro와 케이스가 거..

검색 태그