분류 전체보기 44

[Unity] 뒤끝 1 (연동)

뒤끝 서버란? AFI에서 AWS 인프라를 바탕으로 개발한, 자동 완성형 게임 서버 관리 시스템 클라우드 서버의 한 종류인 BaaS, 그 중에서도 GBaaS(게이밍 BaaS)로, 별도의 개발 없이 간단히 API만 붙여 사용할 수 있는 것이 특징입니다. 명칭은 서버를 뜻하는 IT 용어 백엔드(backend)를 한글로 직역한 것 back(뒤)+end(끝) 특징 게임 개발(비동기, 실시간), 게임 운영, 지표 분석 툴을 모두 제공 필요한 단일 기능을 선택적으로 구현할 수 있어, 클라우드 서비스 특유의 종속성으로부터 비교적 자유 서버 개발이 어렵거나 개발 리소스가 부족한 인디게임 개발자도 쉽게 사용 가능 유니티(Unity)연동 지원 멀티 플레이 게임을 위한 실시간 채팅, 매칭 기능을 제공 기능 실시간 채팅 채팅 ..

뒤끝 2024.01.14

동기와 비동기 방식[블로킹과 논블로킹]

동기란? 요청과 결과가 동시에 진행 요청중인 경우 요청받는 함수의 작업이 완료되었는지 계속 확인 설계가 간단하고 직관적 비동기란? 요청과 결과가 동시에 진행X 연관 되어있는 함수들이 서로 언제 시작하고, 언제 일을 마치는지 서로 신경쓰지 않는다. 요청을 받는 함수가 완료되었는지 여부를 알아서 알려주는 방식 요청중인 경우 결과 값을 바로 응답받지 않아도 된다. 동기 방식에 비해 설계가 복잡 블로킹이란? 요청(부모함수)는 요청한 작업이 끝날 때까지 다른 작업을 하지않고 대기 (그 동안은 모든 일이 중지) 다른 함수를 호출할 때, 제어권도 넘겨주고 작업이 끝난뒤 돌려받는다. 요청받은 함수는 모든 실행을 마치고 최종 return 값을 돌려준다. 논블로킹이란 ? 요청자는 요청한 작업이 수행되는 동안 다른 작업 가..

네트워크 공부 2023.12.25

[Unity] Behavior Tree(BT)

간단한 AI는 FSM를 통해서 만들어왔습니다만 상태가 많아지고 조건이 추가될 수록 보기가 힘들었습니다. FSM의 경우엔 상태가 많지 않은 경우 유용하여 주로 사용했으나 팀 프로젝트에서 보스AI를 담당하면서 많은 상태를 가진 AI를 제작해야했습니다. 찾아본결과 AI의 많은 상태를 효율적으로 관리하기위해선 Behavior Tree를 사용하는 것이 좋다 판단, 보스 AI를 만들기 위해 BT를 직접 구현해 봤습니다. Behavior Tree는 게임 내 캐릭터와 몬스터, 보스에 대한 인공 지능(AI) 및 의사 결정 시스템을 만드는 데 널리 사용되는 디자인 패턴입니다. 행동 트리는 에이전트의 의사 결정 논리를 모델링하고 구성하는 시각적인 방법을 제공하므로 구조화된 모듈식 방식으로 복잡한 행동을 더 쉽게 설계할 수 ..

Unity 공부 2023.12.11

[Unity] FSM 유한 상태 기계

FSM: 유한 상태 기계(Finite-State Machine) 유한 상태 기계는 주어지는 모든 시간에서 처해 있을 수 있는 유한개의 상태를 가지고 주어진 입력에 따라 어떤 상태에서 다른 상태로 전환하거나 출력이나 액션이 일어나게 하는 장치 또는 장치를 나타낸 모델 상태(State): 게임에 정의된 여러 동작을 낸다 Idle, Walk, Run... 한 상태에서 다른 상태로 전이할 수 있고 동시에 여러 상태를 실행할 수 없다. 전이(Transition): 한 상태에서 다른 상태로 변화 하는것 각 상태 로직 또는 외부에서 전이 조건에 의해 전이될 수 있다. FSM을 간단하게 사용해 플레이어를 움직일 수 있게 하는 코드를 작성했습니다. 구현 코드 BaseState 모든 상태의 부모 클래스 public abs..

Unity 공부 2023.11.21

TCP / IP 계층 구조 3(네트워크 계층1)

관련 책: https://product.kyobobook.co.kr/detail/S000001792473 멀티플레이어 게임 프로그래밍 | 조슈아 글레이저 - 교보문고 멀티플레이어 게임 프로그래밍 | product.kyobobook.co.kr 이 책을 참고, 공부하여 서술하고 있습니다.! 네트워크 계층 네트워크 계층이 필요한 이유 MAC주소가 하드웨어에 각인되어 유연성이 떨어진다. 웹 서버를 열었는데 매일 수천 명의 사용자가 이더넷으로 방문한다고 하면, 링크 계층만 써서 서비스를 하게됬을때 서버에 접속하기 위해 이더넷 NIC장비의 MAC 주소를 사용자들이 알아야 한다. 과부하를 견디지 못하고 NIC카드가 고장났을 경우 새로운 NIC카드를 장착해야하는데 이럴 때의 MAC 주소는 이전과 다를테니 사용자는 더 ..

네트워크 공부 2023.11.13

[Unity Firestore] 데이터 읽기 쓰기

현재 진행중인 프로젝트에 사용할 파이어베이스를 배워보고있습니다. 설치방법은 넘어가며 간단하게 파이어스토어에서 값을 받고 쓸 수 있는 코드를 작성해보겠습니다. 작성 코드 using Firebase.Extensions; using Firebase.Firestore; using System.Collections.Generic; using UnityEngine; public class Datas : MonoBehaviour { FirebaseFirestore db; private void Start() { //FirebaseFirestore기본값의 인스턴스를 가져온다. db = FirebaseFirestore.DefaultInstance; ReadData(); WriteData(); } public void W..

Unity Firebase 2023.11.09

[Unity] 가중치 랜덤 뽑기

안녕하세요 이번에는 Unity에서 가중치 랜덤 뽑기 시스템을 만들어보고자 합니다. 먼저 간단한 가중치 랜덤 뽑기 시스템 클래스를 작성해봤습니다. 각 코드에 대한 설명은 주석을 달아놨습니다. using System.Collections.Generic; using UnityEngine; /// /// 가중치 랜덤 뽑기 시스템 클래스 /// public class WeightedRandom { public WeightedRandom() { _dic = new Dictionary(); } private Dictionary _dic; /// /// 가중치 리스트에 아이템과 수량을 추가함 /// public void Add(T item, int value) { //음수가 들어오면 리턴한다. if (value < 0..

Unity 공부 2023.11.05

[Unity] PC에 저장된 이미지 파일 불러오기

이전 게시글에서 부분캡쳐한 이미지를 PC에 저장했었는데요. 이번에는 저장한 이미지를 불러와 게임에 적용시켜보겠습니다. /// /// PhotoData 클래스의 정보로 PC에 저장된 PNG파일을 Image오브젝트의 이미지를 변환하는 함수 /// private void SetImageByPhotoData(PhotoData photoData) { if (photoData != null) { //파일이 저장된 위치와 파일이름을 붙여 저장 string path = photoData.PathFloder + photoData.FileName; //저장 위치에 있는 PNG파일을 읽어 Byte배열로 변환후 저장 byte[] bytes = File.ReadAllBytes(path); Texture2D tex = new T..

Unity 공부 2023.11.02

[Unity] 부분 화면 캡처 기능

안녕하세요. 이번엔 캡처 영역을 지정하여 캡처하는 방법에 대해 알아보겠습니다. 1. Canvas / UI / Image를 생성하여 캡처하고자 하는 영역에 배치합니다. 2. 하단의 스크립트를 작성 3. 스크립트를 오브젝트에 추가 4. 인스펙터 창에서 Canvas에는 메인 Canvas를, AreaImage에는 1번에서 생성한 이미지를 넣습니다. 5. 실행 using System.Collections; using System.IO; using UnityEngine; using UnityEngine.UI; public class CameraApplication : MonoBehaviour { [Tooltip("카메라 모드 활성/비활성")] [SerializeField] private bool _isActive;..

Unity 공부 2023.10.31

TCP / IP 계층 구조 2(물리, 링크 계층)

관련 책: https://product.kyobobook.co.kr/detail/S000001792473 멀티플레이어 게임 프로그래밍 | 조슈아 글레이저 - 교보문고 멀티플레이어 게임 프로그래밍 | product.kyobobook.co.kr 이 책을 참고, 공부하여 서술하고 있습니다.! 물리 계층 책에선 물리 계층은 전자기학과 관련되어있다고 하여 자세히 설명은 하지 않았습니다. 물리 계층 이란? 계층 구조 최하단에 있으며 가장 기본적인 하드웨어 전송을 지원하는 계층 네트워크로 연결된 컴퓨터, 즉 호스트 사이의 물리적 연결을 책임짐 - 물리적으로 연결된 매체가 있어야 정보를 주고 받을수 있다. TP CAT-6 케이블, 전화선, 동축 케이블, 광섬유 케이블 등이 물리계층에서 연결에 이용하는 매체의 예 이다...

네트워크 공부 2023.10.27