졸작을 진행할 때 만들 수 있는 가장 최악의 팀은 무엇일까요???😁😁😁😁
내 팀 내 팀 내 팀 내 팀
내 팀이 진짜 레전드인게 그냥 이게 원래 QA교실 가기 싫어서 만든 팀이지만 나름 기획도 괜찮게 했는데
어떤놈이 그냥 일을 하나도 안하는데 맨날 그래서 멘토링 때 개털렸는데
맨날 개털리고 맨날 이 플젝 계속 할꺼야 안 할꺼야 멘토쌤이 물으면 ㅈㄴ 고민하다가 한다고 하고 ㅅㅂ 하루종일 유튜브 봄

기획자는 그냥 없어짐
그래서 지금 마지막 월간 발표가 3월인데 지금 거의 7월 되가는데 월간 발표 할 게임이 걍 3월이랑 상태가 별로 안다름 ㅅㅂ 근데 그때도 내가 다함
아니 그리고 진짜 줘패고 싶은게 지 일 할거 없데서 서버 하라니까 서버도 몰라서 못한다 하는데 이 시발럼
이미 내 플젝 코드를 유튜브 튜토리얼 보고 처 만들어서 코드 구조 개 좆같고 싱글톤 이미 7-8개는 되서 과의존 ㅈㄴ심해서 기능 추가 할 때마다 이새끼 코드 수정 존나 내가 다하는게 그냥 개 죽여버리고 그냥 다 죽여버리고 싶고 내가 풀리퀘 ㅈㄴ 올리는 동안 메인 머지 메인 커밋 처하다가 메인 버그났다고 갑자기 우리 리포지터리 히스토리 ㅅㅂ 다 없애고 플젝 다 없애서 빈 리포지터리 만들고 이김에 플젝 그만하자고 징징거리다가 지가 고친게 걍 개 븅신새끼이다.

시발련이 걸어다니는 것도 튜토리얼 보고 만들고 인벤토리도 유튭 보고 만들어서 갸 ㅇ아이템은 실질적인건 없고 그냥 스프라이트 드래그 엔 드롭 시뮬레이터만듬 개 시발련
그래도 개발 블로그니 웹서버 기반 낚시게임 네트워킹 구조 처음 해봤지만 어떻게 했는지 써본다 어.
UnityWebRequest 막 쓰는 게 아니라,
Result 래핑,
지수 백오프 리트라이,
인터페이스 기반 확장
요 세 가지에 초점 맞춰서 구조화해봄.
기본 구조
FishingServerService → RetryPolicy → UnityWebRequest → Result<T>
public class Result<T>
{
public bool IsSuccess { get; }
public T Data { get; }
public Error Error { get; }
}
성공 실패 여부를 확실하게 리턴하여 똥코드 반복을 줄이자!
public enum ErrorType
{
Network,
Server,
Validation,
Unknown
}
어 이건 에러 타입을 좀 나누었고 어
using System;
using System.Threading.Tasks;
namespace fishing.Network
{
public interface IRetryPolicy
{
Task<T> ExecuteAsync<T>(Func<Task<T>> action);
}
public class ExponentialBackoffRetryPolicy : IRetryPolicy
{
private readonly int _maxRetries;
private readonly float _initialDelay;
public ExponentialBackoffRetryPolicy(int maxRetries, float initialDelay)
{
_maxRetries = maxRetries;
_initialDelay = initialDelay;
}
public async Task<T> ExecuteAsync<T>(Func<Task<T>> action)
{
var delay = _initialDelay;
for (int i = 0; i < _maxRetries; i++)
{
try
{
return await action();
}
catch (Exception) when (i < _maxRetries - 1)
{
await Task.Delay(TimeSpan.FromSeconds(delay));
delay *= 2; // 지수 백오프
}
}
return await action(); // 마지막 시도
}
}
}
이런 리트라이 정책도 만들어 보았도다. 어 이건 좀 괜찮고 다만 너무 장풍코드이다.
지수 백오프 리트라이인데 이게 IRetryPolicy로 인터페이스로다가 했기때문에
이후에 FixedRetry같은 여러 종류의 리트라이를 구현할 수 있다.
이제 직접적인 서비스는
public interface IFishingServerService
{
Task<Result<StartFishingResponse>> StartFishing();
Task<Result<FishJson>> EndFishing(string guid, bool success);
Task<Result<InitData>> GetData(string userId);
}
어 갑자기 그냥 GPT에서 복사해왔는데 이거 좀 이쁘네
아무튼 이렇게 추상화를 하여 따로 코드에서 만든 기능들을 짬뽕하여 구현하였다. 혹시모를 확장성을 위해 인터페이스로 빼놨는데 지금은 조금 오바긴 하고 어 아무튼.

웹서버는 이렇게 역할을 잘 부담하였다.
이게 뭐 읽는 당신에게 도움 되진 않지만. 나는 성장했다 음하하하하.
서버게임을 처음 구현하면서 여러가지 새로운 것들을 배우게 되었다.
일단 졸작팀은 어떻게 될 지 모르겠다!!
'졸작' 카테고리의 다른 글
| [DEVLOG] 🚀🚀CLAUDE CODE + GEMINI CLI + CURSOR AI + MCP 조합의 미친 워크 플로우로 졸작을 2달만에 끝내볼 것이다!!!🤯 🔥🔥🔥🔥🔥🔥🔥 (3) | 2025.07.10 |
|---|