전체 글48 게임에 Event Bus 적용하기 이벤트 버스에 관한 자세한 설명은 여기서.https://nctp99.tistory.com/58 [게임 디자인 패턴] 이벤트 버스// 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수)에 대한 공부 요약 글입니다. 개요이벤트 버스는 객체가 구독하거나 게시할 수 있는 특정한 전역 이벤트의 목록을 관리하는nctp99.tistory.com 이벤트 버스를 활용해서 식물이 게임 씬 내의 빛 오브젝트를 흡수하는 이벤트를 만들고, 이벤트가 발생했을 때 구독자들이 신호를 받도록 구현한다. 먼저, LightEventBus 스크립트를 작성했다.using System.Collections;using System.Collections.Generic;using System.Security.Cryptog.. 2025. 9. 2. NASA-TLX, 인지적 작업 부하 측정을 위한 도구 HCI (Human-Computer Interaction), UX (User Experience) 관련 연구를 진행하다보면, 자신의 설계한 시스템이나 연구한 내용이 사용자에게 어떻게 다가갈 것인지에 대한 분석이 필요하다. 이를 위해서 피실험자들을 모집하여 사용성 평가 실험을 진행한다. 근데, 같은 실험을 진행하더라도 모두가 느끼는 느낌은 매우 주관적이어서 분석하는 것이 쉽지가 않다. 보통 사용성을 측정하기 위한 사용성 평가 도구를 많이 활용한다. 이와 함께 사용자의 작업 부하를 측정하기 위한 도구로 존재하는데, 그 중 하나가 바로 NASA-TLX 이다. NASA-TLX는 사용자가 특정 과제를 수행하면서 느끼는 주관적인 작업 부하를 측정하기 위해 미국 항공우주국 (NASA)에서 개발한 평가 도구이다. .. 2025. 8. 26. 게임에 Singleton 적용하기 싱글톤 패턴을 이용해서 게임 내 단 하나의 인스턴스를 정의해보자. 먼저 만드려는 게임에서 하나만 존재하고 관리해야 하는 객체는 "나무" 다. Tree Script를 만들고, Singleton으로 만들어주자. 먼저, Singleton 인터페이스를 하나 만든다.using UnityEngine;public class Singleton : MonoBehaviour where T: Component{ private static T _instance; public static T Instance { get // get 생성자로 public static 속성 구현 { if(_instance == null) // 새로운 인스턴스를 초기화하기 전 다른 인스.. 2025. 8. 25. [PBL] 게임을 만들며 디자인 패턴 공부 - 시작 디자인 패턴에 대한 서적을 읽고 몇 달이 지났고, 프로젝트를 맡아 개발하면서 느낀 점이 있다. 배운 개념을 써먹지도 않고, 늘 하던 대로 대충 개발하고 있었다. 배운 지식은 써먹어야 그 가치가 빛난다. 그래서 디자인 패턴을 적극 활용해서 게임을 만들고자 한다. 만들 게임은 버튼을 누르면 전구가 켜지고, 전구에서 나온 빛 에너지로 화면 중앙의 식물을 키우는 단순한 2D 게임이다. 정말 잘 만들어서, 잘 동작하는 캐주얼 게임을 목표로 한다. (실제로 출시하지 않더라도.) 공부했던 디자인 패턴들 하나하나 복습하면서, 게임의 사양으로 넣어보자. 2025. 8. 25. [게임 디자인 패턴] 데코레이터 패턴 (Decorator Pattern) // 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수) 에 대한 공부 노트입니다. 개요데코레이터 패턴은 객체의 변경 없이 동적으로 기능을 추가할 수 있도록 하는 디자인 패턴이다. 이 패턴을 사용하면, 상속을 하지 않고도 새로운 기능을 객체에 추가하는 것이 가능하다. 데코레이터 패턴의 특징데코레이터의 특징은 다음과 같다.데코레이터 패턴은 상속이 아닌 Component를 통해서 기존 객체에 새로운 기능을 추가할 수 있다.정적(static)이 아닌 런타임 시점에 동적으로 기능 추가가 가능하다.여러 데코레이터를 중첩하여 사용할 수 있다. 데코레이터 패턴의 장단점데코레이터 패턴의 장단점에 대해 살펴보자.장점유연성 : 런타임 도중 동적으로 기능을 추가하고, 데코레이터들을 중첩하여 사용이 가능하.. 2024. 11. 14. [게임 디자인 패턴] 방문자 패턴 // 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수) 에 대한 공부 노트입니다. 개요 방문자 패턴은 객체 구조에 새로운 기능을 추가할 때, 객체 구조를 변경하기 않도록 기능을 확장할 수 있도록 해주는 디자인 패턴이다. 이 패턴은 기능들을 객체의 클래스들로부터 분리하여 별도의 방문자 객체에 캡슐화함으로써, 객체 구조를 유지하면서 다양한 기능들을 추가할 수 있도록 한다. 구성 요소Element : Element는 방문자가 방문할 요소를 의미한다. Element는 주로 Accept라는 매서드를 통해 Visitor의 방문을 허락하고, 이 때 Visitor의 Visit 메서드가 호출된다. Visitor : Element를 방문하는 방문자 클래스를 의미한다. Element의 허가가 떨어.. 2024. 9. 26. [게임 디자인 패턴] 옵저버 패턴 // 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수) 을 기준으로 작성되었습니다. 개요 옵저버 패턴(Observer Pattern)은 객체의 상태 변화에 따라 다른 객체들에게 자동으로 통지할 수 있는 디자인 패턴이다. 이는 발행자-구독자 패턴(Publisher-Subscriber Pattern)이라고도 불리는데, 객체 간의 느슨한 결합을 구현하는 데에 유용하다. 옵저버 패턴은 주로 GUI, 이벤트 시스템, 또는 데이터의 상태 변화가 여러 객체에게 알려져야 하는 경우에 주로 사용된다. 구성 요소주체 (Subject) : 상태 변화를 통지해야 하는 객체. 상태가 변경되면 옵저버에게 알리기 위해 옵저버를 등록하고 관리한다.옵저버 (Observer) : 주체의 상태 변화를 감지하여.. 2024. 9. 24. [게임 디자인 패턴] 오브젝트 풀 패턴 // 유니티로 배우는 게임 디자인 패턴 제 2판 (데이비드 바론, 구진수) 을 기준으로 작성되었습니다.참고자료 : https://docs.unity3d.com/kr/2022.1/ScriptReference/Pool.ObjectPool_1.html 개요 많은 게임들의 화면 속에서는 수많은 객체들이 각자 행동하고, 상호작용하는 모습들을 볼 수가 있다. 투사체가 이리저리 날아다니거나, 다양한 파티클 효과가 터지고, 갑자기 수많은 적의 무리가 덮칠 수도 있다. 다양한 객체를 효과적으로 다루기 위해서는 오브젝트 풀 패턴이 사용된다. 오브젝트 풀 패턴은 자주 사용되는 요소를 위해 일부 메모리를 예약한다. 최근 사라진 객체를 메모리에서 없애지 않고, 다시 사용할 수 있도록 오브젝트 풀에 추가한다. 이를 .. 2024. 9. 10. [ML-Agents] 유니티에 ML-Agents 적용하기 // 파이토치와 유니티 ML-Agents로 배우는 강화학습 책에 대한 공부 요약 글입니다. 개요 유니티에서 ML-Agents를 활용해 강화학습을 진행하려면, 학습을 진행할 환경을 구축할 수 있어야 한다. 본 글에서는 환경 구축에 필요한 과정, 특히나 유니티에 ML-Agents를 적용하는 과정에 대해 알아본다. 파이썬 설치 / 유니티 설치 버전 확인하기 책이나 ML-Agents 공식 문서에서 권장하는 버전은 생각보다 잘 동작하지 않았다. 본 글에서는 시행착오 끝에 다음 버전을 사용한다.Python : 3.9.13Unity : 2022.3.28f1ml-agents : 0.30.0ml-agents-envs : 0.30.0PyTorch : 2.4.0numpy : 1.12.1 깃허브에서 ML-Agents.. 2024. 8. 22. [ML-Agents] ML-Agents 구성 요소 알아보기 - Agent Script // 파이토치와 유니티 ML-Agents로 배우는 강화학습 책에 대한 공부 요약 글입니다. 개요 ML-agents의 구성 요소를 간단하게 살펴보고, 그 중 Agent 스크립트의 구성요소에 대해 알아본다. Agent Script - Max Step Max Step은 한 에피소드의 최대 스텝 수를 결정하는 값이다. Max Step이 5000으로 설정되어 있으면, 5000스텝이 지나야 한 에피소드가 종료된다. 에피소드 (Episode) : 에이전트가 어떠한 환경 내에서 행동을 시작하고, 특정한 조건을 만족하거나 목표에 도달하여 행동이 끝날 때 까지의 여정 하나를 하나의 에피소드라고 부른다. Agent Script 의 주요 함수 - Initialize public override void.. 2024. 8. 14. 이전 1 2 3 4 5 다음