250706

lililllilillll·2025년 7월 6일

개발 일지

목록 보기
224/350

✅ What I did today


  • 백준
  • R&D : FishNet


⚔️ 백준


14940 쉬운 최단거리

#include"14940.h"

void B14940::Solution()
{
	int n, m;
	std::cin >> n >> m;
	std::vector<std::vector<int>> mapv(n, std::vector<int>(m, 0));
	std::vector<std::vector<int>> countv(n, std::vector<int>(m, 0));
	std::queue<std::vector<int>> que;
	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < m; ++j)
		{
			std::cin >> mapv[i][j];
			if (mapv[i][j] == 2) { que.push({ i,j }); }
		}
	}
	std::vector<int> ver = { 1,-1,0,0 };
	std::vector<int> hor = { 0,0,1,-1 };
	while (!que.empty())
	{
		int i = que.front()[0];
		int j = que.front()[1];
		que.pop();

		for (int k = 0; k < 4; ++k)
		{
			if ((0 <= i + ver[k]) && (i + ver[k] < n) &&
				(0 <= j + hor[k]) && (j + hor[k] < m) &&
				mapv[i+ver[k]][j+hor[k]] == 1)
			{
				mapv[i + ver[k]][j + hor[k]] = -1;
				countv[i + ver[k]][j + hor[k]] = countv[i][j] + 1;
				que.push({ i + ver[k], j + hor[k] });
			}
		}
		//for (int dir = 0; dir < 4; ++dir)
		//{
		//	int ny = y + dy[dir];
		//	int nx = x + dx[dir];

		//	if (ny < 0 || ny >= n || nx < 0 || nx >= m) continue;
		//	if (visited[ny][nx]) continue;
		//	if (mapv[ny][nx] != 1) continue;

		//	visited[ny][nx] = true;
		//	countv[ny][nx] = countv[y][x] + 1;
		//	que.push({ ny, nx });
		//}
	}
	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < m; ++j)
		{
			if (mapv[i][j] == 1) { std::cout << -1 << ' '; }
			else { std::cout << countv[i][j] << ' '; }
		}
		std::cout << '\n';
	}
}


🛠️ R&D


Fishnet

NetwrokManager
: 연결을 만들고, 세션을 호스팅하고, 클라-서버 통신을 다루는 네트워크 생명주기를 관리한다. Demos/Prefabs/NetworkManager.prefab에 프리팹이 있다.

NetworkHudCanvas
: 네트워크 연결 빠른 테스트 위해 만들어진 UI. 클라이언트로 시작할지 서버로 시작할지 정하는 버튼이 있다. NetworkManager가 로드될 때 어떻게 시작할지 정함. NetworkManager 프리팹 아래 자식에 존재.

튜토

연결 생성

  • NetwrokManager 아래에 있는 NetworkHudCanvas에서 Auto Start Type을 Host로 변경

플레이어 생성

  • 게임 오브젝트 하나 만들고 NetworkObject 컴포넌트 추가한 뒤 프리팹화
  • NetworkManager 오브젝트 > PlayerSpawner > Player Prefab에 할당
  • 빈 게임 오브젝트를 위치 지정 후 Spawns에 할당
  • 플레이하면 1개만 스폰되는게 정상. 빌드 만들어서 켜면 자동으로 연결돼서 2개 스폰됨.

클라 검증 이동

  • 플레이어에 NetworkBehaviour 상속받은 클래스 스크립트 붙여서 움직이게 한다
  • 네트워크 오브젝트의 크기, 회전, 위치, 부모 정보를 동기화시키는 NetworkTransform 컴포넌트를 플레이어에 추가
  • Client Authoritative랑 Synchronize Position enabled 돼있어야 함


profile
너 정말 **핵심**을 찔렀어

0개의 댓글