전체 글 43

[Unity] 2D 랜덤 맵 생성(Celluar Automata)

Celluar Automata 소개 셀룰러 오토마타를 사용한 맵 생성 과정은 다음과 같습니다. 1. 초기 상태 설정: 특정 비율(ex: 50%)로 맵을 벽으로 채웁니다. 2. 셀룰러 오토마타 규칙 적용: 각 타일을 선택하여 주변 8칸 중 벽이 4칸을 초과할 경우 해당 타일을 벽으로, 4칸 미만일 경우 길로 변환합니다. 3. 반복적인 업데이트: 2번의 규칙을 정해진 횟수(ex: 5회)만큼 반복하여 맵을 계속 업데이트합니다. 이러한 과정을 통해 초기에 무작위로 채워진 맵이 셀룰러 오토마타의 규칙에 따라 반복적으로 변화하면서 벽과 길의 패턴이 형성됩니다. 주요 스크립트 using System.Collections; using System.Collections.Generic; using UnityEngine; ..

Unity/정보 2024.01.20

[Unity] New Input System

New Input System 소개 현재 유니티는 개발된지 오래된 엔진으로 아래처럼 기존의 입력 시스템도 오래됐다. 이 입력 시스템은 인풋시스템이 명확하지가 않아 vr, 콘솔, 모바일, pc 등등 여러 디바이스별로 일일이 키 매핑을 직접 찾아 입력해줘야한다. 그리고 코드 작성시 input.if (Input.GetMouseButtonDown(0)) else if (Input.GetKey(KeyCode.W)) 이런식으로 입력되어 보기에도 안좋아지는 단점을 가지고 있다. 이러한 것들을 해결하기 위해 유니티에서 새로운 input system을 만들어 소개한다. 사용 방법 새로운 input system을 사용하기 위해선 Package Manager에서 따로 설치해줘야한다. 아래 사진에서 알 수 있듯이 Input ..

Unity/정보 2024.01.13

[Unity] 오브젝트 풀링 (Object pooling)

오브젝트 풀링 여러가지 게임 중에 같은 오브젝트들이 반복해서 나오는 상황이 발생하는 게임이 있다. 예를 들어 아래 사진처럼 뱀서라이크 게임에서 같은 몬스터가 반복적으로 나올때라던지 오브젝트 풀링을 모른다면 위 상황을 연출할때 박쥐를 생성할땐 Instantiate를 사용하고 삭제할 때는 Destroy를 사용할 것이다. 하지만 Instantiate와 Destroy를 사용하면 안좋다는것은 조금만 구글링해도 금방 알 수 있듯이 이를 해결하기 위해 보통 오브젝트 풀링을 사용한다. 오브젝트 풀링이란 게임에서 자주 사용되는 객체를 미리 생성하여 필요할 때 활성화/비활성화를 통해 재활용하여 성능을 최적화하는 기법이다. 원리는 다음과 같다. 1. 풀링 생성: 게임이 시작될 때 미리 정해진 개수의 오브젝트를 생성하여 풀(..

Unity/정보 2024.01.06

[Unity] 모바일 게임 성능 최적화

1편 https://www.youtube.com/watch?v=1mJtoceqvro 2편 https://www.youtube.com/watch?v=RLcSRuZsZQU 유니티 공식 유튜브 채널에서 알려주는 팁이다. 알고 있으면 매우 도움이 되는 팁들을 알려주기에 한번 정독하면 좋을 듯 하다. 프로파일러 병목현상이 나타나는 부분을 정확히 파악하기 위해 프로파일러를 사용해야한다. 프로젝트 마무리 단계에서만 하지말고 개발 초기부터 정기적으로 검사해주는게 좋다. 프로파일링할땐 fps말고 ms를 확인하며 체크하는게 좋다. fps와 ms는 1 fps = 10/ms, 1 ms = 10/fps 이런식의 관계가 적용된다. 그래서 프레임 한장을 그리기 위해 소모되는 시간을 각 항목별로 확인할 수 있으니 ms숫자가 높은 항..

Unity/정보 2024.01.02

[Unity] 사운드 매니저

사운드 매니저 게임의 중요한 부분 중 하나는 바로 사운드다. 프로젝트마다 많은 효과음 및 배경음이 사용된다. 이를 효과적으로 관리하기 위해 아래의 사운드 매니저 스크립트를 기반으로 조금씩 변형하여 사용하고 있다. 단, 지금 소개하는 기능은 한 오브젝트에 모든 오디오 소스가 있기에 일부 3D 작업물에는 적합하지 않을수도 있다. 주요 스크립트 using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; [System.Serializable] public class Sound { public string soundName; public AudioClip clip; } public..

Unity/정보 2023.12.03

[Unity] AOS Fog of War 에셋

AOS Fog of War 에셋 소개 이 에셋을 사용하여 전장의 안개 기능을 빠르게 게임에 적용시킬 수 있다. 심지어 무료이며, 유료 못지 않게 기능이 잘 구현되어 있다. https://assetstore.unity.com/packages/vfx/shaders/fullscreen-camera-effects/aos-fog-of-war-249249 AOS Fog of War | 카메라 효과 | Unity Asset Store Add depth to your project with AOS Fog of War asset from Fischl Works. Find this & more 시각 효과 options on the Unity Asset Store. assetstore.unity.com 아래는 위 에셋을 설..

Unity/정보 2023.12.02

[Unity] DOTween 사용하기

DOTween 소개 DOTween을 사용하면 코드로 간단하게 애니메이션을 만들고 조작할 수 있습니다. 주로 개체의 이동, 회전, 크기 조절 등의 애니메이션을 쉽게 구현할 수 있습니다. 또한, 간단한 코드 작성으로 시간에 따른 값의 변경을 부드럽게 처리할 수 있는 등의 기능을 제공합니다. 간단하고 효과적인 애니메이션 및 트윈 처리를 위한 강력한 도구로 평가받고 있습니다. https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676 DOTween (HOTween v2) | 애니메이션 도구 | Unity Asset Store Use the DOTween (HOTween v2) tool from Demigiant on your ne..

Unity/정보 2023.11.27

[Unity] 구글 스프레드시트 연동

구글 스프레드시트 연동 소개 엑셀등을 이용하여 개발에 필요한 파일을 사용하는 것보단 구글 스프레드시트를 이용하는 방법을 알아보자. 스프레드시트를 이용하면 아래와 같은 장점이 있다. 실시간 업데이트 및 협업 기능: 구글 스프레드시트는 여러 사용자가 동시에 작업할 수 있도록 협업 기능을 제공한다. 여러 개발자가 동시에 스프레드시트를 수정하면서 데이터를 업데이트할 수 있다. 웹 기반 인터페이스: 구글 스프레드시트는 웹 기반 인터페이스를 제공하므로 별도의 소프트웨어 설치 없이 어디서든 접근할 수 있다. 따라서 데이터 업데이트 및 관리가 편리하다. 실시간 데이터 동기화: 스프레드시트의 변경 사항은 실시간으로 반영되므로 데이터의 최신 버전을 얻을 수 있다. 이는 실시간으로 게임 내 데이터를 업데이트하는 데 유용할 ..

Unity/정보 2023.11.14

[Unity] 스텐실 버퍼(Stencil Buffer)

스텐실 버퍼 소개 스텐실 버퍼 쉐이더를 이용하여 특정 투명한 물체를 통해서 볼때만 볼 수 있는 물체를 만들고자 한다. 아래 영상을 처음보고 신기하여 만들어 보았다. https://www.youtube.com/watch?v=4zAt8YKoso4 위 영상을 기반으로 만든것이 아니라 좀 더 자세히 알고 싶어서 아래 주소를 알아내어 따라해봤다. https://www.alanzucconi.com/2015/12/09/3873/ 주요 기능 1. StencilGeometry (보여지는 물체) Shader "Stencils/StencilGeometry" { Properties { _StencilMask("Stencil Mask", Int) = 0 _Color ("Color", Color) = (1,1,1,1) _Main..

Unity/정보 2023.10.26

[Unity] Boids 군집 알고리즘

Boids 군집 알고리즘 소개 Boids는 인공 생명 알고리즘으로, 개체 간 상호 작용을 통해 동물의 군집 움직임을 표현하는데 사용한다. Boids는 각 개체마다 다음 3개의 규칙을 가지고 움직인다. separation: 무리와 충돌하지 않게 반대 방향으로 이동 alignment: 무리의 평균 방향으로 조향 cohesion: 무리의 평균 위치를 향해 이동 boids가 여러 방법이 있는데 그 중 아래 영상을 참고로 만들어볼것이다. 아래 영상은 군집의 타겟이 있으며 이를 중점으로 따라가는 형식이다. https://www.youtube.com/watch?v=_CTzKiVTFPQ Boids 구현 1. Boids 코드 public class Boids : MonoBehaviour { [SerializeField]..

Unity/정보 2023.10.16