Page History
| Info |
|---|
웹서비스 개발자가 게임개발에 필요한 입문서를 작성해보았으며 추후 바이브에 지식을 참고해 만들수 있는 기초 개념 문서 생성을 시도해보았습니다. 액터모델이 게임서버의 코어로 이용할 계획이기때문에 이 중심으로 필요한 입문서를 저의 약간의 경험과 함께 LLM을이용해 생성해보았습니다. |
...
액터 모델과 자바 생태계의 변화
제가 액터 모델을 처음 접한 시점은 C++ IOCPSOCK을 활용해 고성능 서버를 개발하고, 북미 기준 동일 카테고리 TOP3 트래픽을 처리하던 때였습니다. (Java 7 시점 기준)
...
- Java 7 시절: 고성능 IO 부재 → PlaFrame(+Akka) 채택
- Java 11: WebFlux 완성 → Reactive Streams와 함께 주목
- Java 21~23: Reactive Streams 없이도 고성능 IO 가능
- Akka 유료화 → 자바 생태계의 주도권 변화
...
Akka와 Akka.NET의 관계
Akka는 원래 Scala/Java 진영에서 시작된 오픈소스 프레임워크로, 액터 모델 기반의 고성능 동시성 처리를 지원했습니다.
분산 시스템, 멀티스레드, 메시지 기반 아키텍처를 손쉽게 구현할 수 있도록 설계되어 많은 고성능 서버 애플리케이션에서 사용되었습니다.
이후 .NET 생태계에서도 동일한 패러다임을 필요로 하면서 Akka.NET이 등장했습니다.
이는 Akka의 철학과 설계를 .NET/C# 환경에 맞게 이식한 프로젝트로, 자바 진영에서 검증된 액터 모델 아키텍처를 닷넷 환경에서도 그대로 적용할 수 있게 되었습니다.
정리하면, Akka와 Akka.NET은 언어와 플랫폼은 다르지만 동일한 액터 모델 철학을 공유하는 "쌍둥이 프로젝트"라 할 수 있습니다.
...
액터 모델의 핵심 개념
액터 모델은 동시성과 분산 처리를 단순화하기 위한 추상화 모델입니다. 전통적인 스레드 기반 프로그래밍과 달리, "액터"라는 독립적인 단위가 다음과 같은 특징을 가집니다.
상태 캡슐화
- 액터는 자신의 상태를 외부에서 직접 접근할 수 없게 하고, 메시지를 통해서만 상태를 변경합니다.
비동기 메시지 전달
- 액터 간 통신은 비동기 메시지 전달로만 이루어집니다.
- 이는 락(lock)이나 공유 메모리에 의존하지 않아도 안전한 병렬 처리가 가능하게 합니다.
자율적인 동작 단위
- 각 액터는 독립적으로 실행되며, 메시지를 수신하면 내부 로직에 따라 새로운 액터를 생성하거나, 다른 액터에게 메시지를 전달하거나, 상태를 변경할 수 있습니다.
...
자바 진영과 닷넷 진영에서의 활용
Java / Scala 진영
- 대표적으로 Akka가 액터 모델 구현체로 사용되었고, 이후 Reactive Streams와 결합하여 고성능 분산 시스템 개발에 널리 활용되었습니다.
- Spark, Kafka 같은 빅데이터/스트리밍 프레임워크와도 잘 어울렸습니다.
.NET 진영
- Akka.NET은 C# 환경에서도 동일한 개발 패턴을 제공하여, 서버 사이드 애플리케이션, 마이크로서비스, 게임 서버 등에서 활용되었습니다.
- 최근에는 Orleans와 같은 액터 모델 기반 프레임워크도 성장하며, 닷넷 생태계의 분산 컴퓨팅 기반을 강화하고 있습니다.
...
정리
- Akka: Scala/Java 기반 액터 모델 프레임워크
- Akka.NET: C#/.NET으로 이식된 액터 모델 프레임워크
- 공통점: 메시지 기반, 상태 캡슐화, 비동기 동작으로 동시성/분산 시스템을 단순화
- 의의: 자바 진영과 닷넷 진영 모두에서 동일한 아키텍처 패턴을 공유할 수 있게 함
개발입문서 생성 프롬프트
기존 소스와 문서를 바탕으로 보강된 새로운 문서를 작성하려고합니다. 기존 프로젝트는 온라인 기반의 다중접속자의 대화를 처리하며, 그래픽으로 표현하는 채팅서비스입니다.
지침
- 기존정보에서 문서와 소스코드를 참고해 학습할수 있습니다.
- 새로운 문서는 doc/game 폴더하위에 md스타일로 문서를 작성합니다.
- 새로운 문서는 채팅웹서비스를 참고해, 게임개발에 필요한 게임웹서비스를 만들고자할때 도움되는 문서여야하며 기존 기술을 활용할수 있습니다.
- 만드려고 하는 게임은 2D기반의 간단한 RPG게임으로, 캐릭터가 맵에서 이동하고, 채팅을 할수 있는 기능이 포함되어야 합니다.
- 그리고 배경,지형처리,아이템획득,미니맵,퀘스트,인벤토리등의 기본적인 게임기능이 포함되어야 합니다.
- 문서작성은 게임개발 경험없는 웹서비스 개발자가 게임개발의 컨셉을 이해할수 있도록 쉽게 작성되어야 합니다.
- 문서작성은 게임개발에 필요한 기술과 개념을 중심으로 작성되어야 합니다.
- 서버에 사용되는 기술은 멀티스레드보다 , 이 프로젝트가 이미 이용하고 있는 액터모델을 활용하는 방향으로 작성되어야 합니다.
- 클라이언트는 웹을 통해 제공하기때문에 성능이 좋은 Blazor WebAssembly를 활용, 브라우저 GPU가속을 활용하는 방향으로 작성되면 좋습니다.
- 문서작성은 개념설명,기술설명,예시코드,실제적용방법등을 포함해야 합니다. 코드가 실제 작동가능한 정도로 너무 자세할 필요는 없습니다.
기존정보
-doc/ko : 하위폴더에 기존 문서가 있습니다. -BlazorChatApp : 하위에 프로젝트 소스가 있으며 서버/클라이언트 프로젝트로 분리되어 구성되어있으며 닷넷 Balzor로 작성되었습니다.
| Info |
|---|
웹서비스 개발자에게 필요한 입문서를 위해 과거에 작성한 그래픽 웹채팅을 참고해 만들면 좋겠다란 생각이 문득 들어 시도되었습니다. |
- gpt 3시절에 만든것으로 그 당시 LLM으로는 이와같은 다중그래픽 채팅서비스 코드를 만들지 못한듯
- 이제 LLM모델이 프로그래밍의 능력이 뛰어나 동시접속 다중처리를 만들어내지 않을까?
- 배경 그래픽 정도만 AI에게 그려달라함
- 2D게임에 도트그래픽을 이용한 캐릭애니메이션 연출이 필수이나~ 현재의 이미지 생성형도 픽셀아트는 하지 못함
- 나노바나나는 해주지 않을까? 기대감
- 이것도 캐릭터 스프라이트를 다운받아, 내코드에 맞는 애니영역을 맞추기위해 그림판 수작업 신공을 했음
- 1픽셀이라도 어긋나면 캐릭터가 가진 손이 엉덩이에오거나~ 갑자기 시공간을 이동하는 듯한 깜빡임 현상이 발생할수 있음
- 2D게임에 도트그래픽을 이용한 캐릭애니메이션 연출이 필수이나~ 현재의 이미지 생성형도 픽셀아트는 하지 못함
