전체 글 37

Unity 클라이언트의 외부 데이터 통신 기초: REST API와 WebSocket 비교

최근 마이너스 나인 프로젝트를 스팀에 런칭하며 유니티의 렌더링 최적화와 로직 설계에는 큰 자신감을 얻었다. 하지만 게임을 넘어 디지털 트윈이나 스마트 공장 같은 B2B 산업으로 시야를 넓히면서 외부의 방대한 데이터를 유니티로 가져오는 통신 파이프라인에 대한 이해가 필수적임을 깨달았다. 그래서 직접 REST API와 WebSocket을 유니티에 연동해 보며 그 차이를 분석해 보았다. REST API 구현: 초기 상태 데이터 가져오기디지털 트윈 환경이나 스마트 공장을 유니티로 구현할 때 가장 먼저 직면하는 과제는 현재 공장의 상태를 어떻게 가져올 것인가이다.이를 위해 가장 기본이 되는 HTTP 통신 방식인 REST API를 활용했다. REST API는 클라이언트가 요청하면 서버가 응답하고 연결을 끊는 단발성..

개인 공부 2026.04.12

스팀 게임 출시 후 이야기...(업데이트 하는방법)

작년 말부터 올해 2월까지 만든 게임을 처음으로 스팀에 출시했다.https://store.steampowered.com/app/4406640/Minus_Nine/ Minus Nine on SteamSecure the vaccine and escape the infested facility! Battle your way from B9 to the surface rescue chopper in this isometric roguelite shooter. Restore power, upgrade your gear with Bio-Samples, and protect humanity's last hope against endless waves of thestore.steampowered.com처음으로 출시를 하..

헥사곤 좌표계

헥사 매치업 게임을 개발할 때 사용한 스왑 로직이다.(그림판에 대충그렸었음...아무도 안볼줄알고..) 일반적인 직사각형과 달리 6방향 이동을 해야해서 아크 탄젠트를 사용하여 각도를 구해주었다.angle = Mathf.Atan2(x,y) * Mathf.Rad2Deg; (라디안을 도 단위로 변환)보드판이 이렇게 있다 가정하고 스왑을 해보면 짝수 홀수 열에 따라 변하는 값이 달라지게 된다.보드판을 제작할때 홀수 열들의 위치를 최대 높이의 절반만큼 높였기 때문에 이런식으로 달라지는 것이다. 결과적으로 이렇게 코드를 짰다. 찾아보니 헥사 매치를 개발할때는 큐브 좌표계를 많이들 사용한다고 나와있다.지금 방식은 2d 배열처럼 열과 행을 보드로 표현한것이고 큐브 좌표계는 헥사곤을 x,y,z 3축 좌표로 표현하여 더 ..

개인 공부/C# 2025.09.30

깃랩과 깃허브데스크탑 연동하기

우선 깃허브 데스크탑을 다운로드 해준다.https://desktop.github.com/ Redirecting… desktop.github.com 깃랩에서 우측 상단 프로필을 클릭해 Edit Profile을 클릭한 후 Access Tokens을 클릭해준다.토큰의 이름만료일 지정토큰 권한 설정 ( 전체를 얻어오기 위해 api 선택 )토큰을 생성해준다. ( 나중에 필요하니 메모장에 따로 적어둘것 ) 팀 프로젝트를 하기 위해 그룹을 생성해주고 프로젝트를 생성 후 팀원들을 초대해준다. 해당 프로젝트를 유니티와 연동시키기 위해서는 전에 올린 Git 포스팅을 참고하면 된다. 깃 데스크탑을 열어 해당 버튼을 클릭하고  URL 부분에 아까 만들었던 프로젝트의 URL을 붙여넣기 해준다. 인증 실패라는 팝업이 나타나게 되..

개인 공부/Git 2024.09.19

TCP 통신 javascript

전에 유니티를 사용하여 클라이언트-서버 통신 시스템을 만들었었다.이번에는 저번거를 약간 수정해서 서버를 자바 스크립트를 이용하여 만들어보겠다.유니티 클라이언트 코드는 저번과 동일하다.const net = require('net');var users = new Map();const server = net.createServer((socket) => {    const cliendId = Date.now().toString();    console.log('Unity 클라이언트가 연결되었습니다.');    socket.on('data', (data) => {        console.log('클라이언트로부터 받은 데이터:', data.toString());        for (const [clientId..

유니티 TCP 통신

유니티에서 새 프로젝트를 생성한다. (이름은 Server로 하였다.)빈 객체를 하나 생성하고 이름을 변경해주었다.TCP Server 스크립트를 생성하여 방금 만든 객체에 적용시켜준다. using UnityEngine;using System;using System.Collections.Concurrent;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;public class TCPServer : MonoBehaviour{ public int port = 7777; private TcpListener tcpListener; private Thread listenThread; private..

Post Process (URP)

포스트 프로세싱은 원본 이미지나 렌더링된 장면에 추가적인 시각적 효과를 적용하는 과정을 말한다. 유니티에서 이를 다뤄보겠다.우선 버전은 22.3.30 버전을 사용했다. HDRP 프로젝트를 생성해준다. 효과를 보기위해 일단 맵을 대충 꾸몄다. 하이어라키 창에서 우클릭을 한 후 Global Volume을 생성해준다. Priority 값을 1로 주고 Profile New를 클릭하여 원하는 효과를 추가한다. 우선 모션블러 효과를 먼저 적용시켜보겠다. 효과를 확인하기 위해서 이동 코드를 카메라에 적용시켰다.  다음으로 Depth Of Field 효과를 적용시켜 보겠다.  Volume의 모드를 Global로 하면 전체 다 적용이 된다. 위의 경우가 Global로 모드를 적용한 결과이다.모드를 Local로 바꾸면 자..

연결 리스트 (Linked List)

연결 리스트는 노드(Node)라는 구조를 사용하여 데이터를 저장하는 자료구조이다. 각 노드는 데이터와 다음 노드를 가리키는 포인터를 포함하며, 노드들은 포인터를 통해 서로 연결된다. 연결 리스트는 배열과 달리 크기가 고정되어 있지 않아 동적으로 데이터를 추가하거나 삭제할 수 있으며, 메모리 공간을 효율적으로 사용할 수 있다. 단뱡향 링크드 리스트 (Singly Linked List) : 단방향으로만 연결되어 있는것으로 다음 노드로만 이동 가능양방향 링크드 리스트 (Double Linked List) : 이전 노드와 다음 노드를 가리키는 포인터를 모두 갖고 있어 양방향으로 탐색이 가능한 자료구조   using System.Collections;using System.Collections.Generic;us..

개인 공부/C# 2024.07.26

Git을 사용해보자.

깃은 자신의 프로젝트 관리, 팀원과의 협업 등 자주 쓰인다. 오늘은 GitLab을 사용해보겠다.우선적으로 나는 GitBash와 TortoiseGit을 다운받은 상태이고 GitLab 회원가입을 마친 상태이다. 우선 git clone을 해보자.다른 사람의 프로젝트를 다운받기 위해 깃에 들어가 URL을 복사해준다. URL부분에 복사한 URL을 붙여넣기 하고 Directory 부분에 다운받을 폴더를 설정 후 OK를 눌러주면 된다.이번에는 내가 만든 프로젝트를 GitLab에 올려보자.Private는 나와 초대한 팀원들만 들어올 수 있다.Public은 누구나 들어올 수 있다.Create project를 클릭한다. URL 창에 뜨는 경로를 복사해준다. 다음은 맨 위 과정과 똑같다. Git Clone을 누르고 URL을..

개인 공부/Git 2024.07.26

스택, 큐

스택은 LIFO(Last-In, First-Out) 방식으로 데이터를 저장하고 관리하는 자료구조이다. 스택은 데이터를 쌓아 올리는 것처럼 가장 최근에 추가된 데이터가 가장 먼저 꺼내지는 특징이 있다.C#에서 스택은 Stack 클래스로 제공되며, 다양한 데이터 유형을 저장할 수 있다. 스택은 함수 호출, 연산자 우선순위 처리, 되돌리기/다시 실행 기능 등 다양한 분야에서 사용된다. 큐는 FIFO(First-In, First-Out) 방식으로 데이터를 저장하고 관리하는 자료구조이다. 큐는 데이터를 쌓아 올리는 것처럼 가장 먼저 추가된 데이터가 가장 먼저 꺼내지는 특징이 있다. 데이터는 큐의 맨 뒤에 추가되고, 맨 앞에서 삭제된다. 큐는 데이터를 순서대로 처리해야 하는 경우에 유용하다. 예를 들어, 프린터 큐..

개인 공부/C# 2024.07.26