분류 전체보기 278

2D RPG - (15 - 4) 단검 투척 스킬 구현_04

이번 포스트에서는 이전에 만든 단검 투척 스킬을 조금 더 개선해보겠습니다.단검이 날아갈 때 시각적으로 돋보이게 개선하고단검이 적중한 후 다시 회수할 수 있도록 만들어보겠습니다. 1) PlayerControllerpublic class PlayerController : BaseCharacterController{ . . . // Skill Info . . . public GameObject _sword; . . . public void AssignNewSword(GameObject newSword) { _sword = newSword; } public void ClearTheSword() { Destroy(_sword); } . ..

유니티 연동 #2

이번 포스트에서는 이전의 코드에서 유니티의 자료형 중 하나인 GameObject를 사용해보겠습니다.그러나 이전의 상태에서 유니티의 자료형 즉, 유니티의 데이터를 사용하는 경우 실행되지 않는 문제가 발생하게 됩니다. 그 이유는 다음과 같은데,현재 네트워크 패킷은 유니티의 메인 스레드가 아닌 ThreadPool에 저장된 패킷을 가져와 사용하고 있습니다.이때 유니티에서는 게임의 스레드가 아닌 다른 스레드에서 게임 요소와 관련된 로직을 수행하는 것을 원천봉쇄하기에 실행이 되지 않습니다. 따라서 이를 위해 만들어진 패킷을 바로 사용하는 것이 아닌 큐에 일시적으로 보관하고 보관된 패킷을 유니티에서 사용할 수 있도록 조정하여 사용하도록 하겠습니다. 1) 유니티 프로젝트 - PacketQueuepublic class ..

C# 2025.01.28

유니티 연동 #1

이번 포스트에서는 이전에 만든 네트워크 프로그램을 Unity와 연결하여 수행하도록 하겠습니다.우선 이번 포스트에서는 클라이언트를 만들어보도록 하겠습니다. 유니티 에디터에서 클라이언트 프로젝트를 하나 생성하고 필요한 스크립트를 가져오겠습니다. 1) 서버 - 클라이언트 공용으로 사용하는 스크립트 공용으로 사용하는 스크립트 중에서, 이전의 Listener와 JobQueue 그리고 PriorityQueue의 경우서버 단계에서 사용하므로 가져오지 않습니다. 또한, 클라이언트는 ServerSession을 사용하므로 ServerSession을 위의 경로에 포함하였습니다. 2) 클라이언트에서만 사용하는 스크립트 클라이언트에서 패킷을 보내고 받기 위한 스크립트를 위와 같이 준비하였습니다. 3) GenPackets.bat..

C# 2025.01.28

2D RPG - (15 - 3) 단검 투척 스킬 구현_03

이번 포스트에서는 단검 투척 시에 단검의 궤적을 그리고 궤적대로 날아가도록 구현햐보겠습니다.따라서 기존의 단검 투척 스킬 그 자체를 의미하는 클래스인 SkillThrowingSword의 로직을 수정합니다. 1) SkillThrowingSwordpublic class SkillThrowingSword : SkillTemplate{ [Header("Skill Info")] [SerializeField] private GameObject _swordPrefab; [SerializeField] private Vector2 _launchForce; [SerializeField] private float _swordGravity; private Vector2 _finalD..

2D RPG - (15 - 2) 단검 투척 스킬 구현_02

이번 포스트에서는 단검 투척 스킬에서 단검을 위한 스크립트를 구현해보겠습니다. 1) SkillThrowingSwordControllerpublic class SkillThrowingSwordController : MonoBehaviour{ private Animator _animator; private Rigidbody2D _rigidBody2D; private CircleCollider2D _circleCollider2D; private PlayerController _playerController; private void Awake() { _animator = GetComponentInChildren(); _rigidBody2D = GetCom..

2D RPG - (15 - 1) 단검 투척 스킬 구현_01

이번 포스트에서는 캐릭터의 스킬 중에서 단검을 투척하는 스킬을 구현해보겠습니다.우선, 캐릭터가 단검을 투척하는 동작을 수행할 수 있도록 설정하는 과정과 구성을 알아보겠습니다. 1) 사용하는 요소1) 단검 투척 스킬을 사용하기 위한 액션 2) 단검 조준 / 단검 투척 / 단검 회수의 3개의 애니메이션 3) 단검 투척시 Instantiate 함수로 생성할 단검 프리팹 4) 단검이 박히거나 / 단검이 움직이는 동안 연출될 단검의 애니메이션 2) 애니메이터의 구성1) Player의 애니메이터 2) 단검(=Sword)의 애니메이터 위와 같이 필요한 구성을 준비하였습니다.이제 코드로 넘어가보겠습니다. 3) 코드3 - 1) PlayerStateAimSwordusing System.Collections;using Sy..

JobTimer

현재 상태의 코드에서는 하나의 GameRoom 만이 존재하여 문제없이 동작하지만,만약 현재 GameRoom 외에도 다른 용도의 Room들이 추가되면 동시에 개별 Room들의 작업을 처리해야 하므로 부하가 발생하게 됩니다. 따라서 이번 포스트에서는 해당 문제를 해결하기 위한 작업을 수행해보겠습니다. 1) Server - 메인 스레드에서 Tick을 통한 처리class Server{ . . . static void Main(string[] args) { . . . int roomTick = 0; while (true) { int now = System.Environment.TickCount; ..

C# 2025.01.27

패킷을 모아서 전송하기

이번 포스트에서는 이전의 포스트에서 미리 예고하였던패킷을 모아서 전송하는 방법으로 기존의 코드를 수정해보겠습니다. 1) Serverclass Server{ static Listener serverListener = new Listener(); // 새로운 채팅방을 위한 GameRoom 생성 public static GameRoom Room = new GameRoom(); static void Main(string[] args) { . . . while (true) { Room.Push(() => Room.Flush()); Thread.Sleep(250); } }} Server의..

C# 2025.01.27