티스토리 뷰

안녕하세요. 피니엔진을 사용하여 게임을 개발중인 한 사람입니다.


피니엔진으로 TCP/IP 통신 구현을 할 수 없을까 고민하다 루아소켓이란 녀석을 알게 되었습니다.

이에 대한 별다른 정보가 없는 현실이라, 제가 알아낸 것들을 강좌로 쓰면 어떨까 고민했습니다. 이에 부족하지만 제가 알아낸 것들을 피니엔진으로 개발하는 개발자들에게 공유하고자 이 강좌를 쓰게 되었습니다.


이번 장에서는 이 강좌에서 원하는 목표와 생각해야할 것들에 대해서 가볍게 다루도록 하겠습니다.


<개요>

게임서버라고 많이들 들어보셨을 것입니다.
요즘 게임들은 거의 대부분이 네트워크 연결이 필수가 되었지요. (열쇠 시스템이라던가...)
이와 같이 네트워크 연결이 필요한 게임은, 당연한 소리겠지만 서버를 필요로 합니다.
서버와 클라이언트(게임) 간의 통신을 통해 서버에서는 유저의 정보를 기록하고, 클라이언트가 이를 받아들여 유저의 정보를 띄워주겠지요?

피니엔진에서 제작되는 게임 또한 네트워크 연결이 필요없다고 단정지을 수는 없겠지요.
실행되는 게임이 구버전인지를 파악하거나, 채팅을 구현한다던가, 열쇠 시스템을 넣는다던가...
모두 서버와의 통신을 통한 소켓 프로그래밍으로 구현되어야 할 기능들입니다.



우선 이 강좌를 보시게 될 분들은 아래의 지식을 어느정도로 필요함을 밝힙니다.

1. TCP/IP의 통신 구조 방식 및 소켓 관련 개념, 게임 서버
2. Lua 언어 (클라이언트에 사용하게 될 언어)
3. C++언어, boost.asio (이 강좌에서 서버에 사용하게 될 언어)

당연한 얘기지만, TCP/IP 통신을 위해서는 클라이언트와 서버가 필요합니다. 둘 중 하나만 있다고 해서 절대 통신이 이루어 질 수 없겠지요.

이 클라이언트와 서버는 상호작용을 해야하기 때문에 둘 중 하나가 변경된 요소가 있다면 나머지 하나도 이에 맞는 변경이 필요로 합니다.


이로 인해, 이 강좌에서는 클라이언트와 서버 둘 다 제작하는 과정을 담으려 합니다.
당연한 얘기지만 클라이언트는 루아소켓을 기반한 피니엔진으로 제작하며, 서버같은 경우는 윈도우 기반의 boost.asio로 진행하려고 합니다. (boost.asio는 C++ 기반의 라이브러리이기 때문에, C++에 대한 지식이 필요하다고 기재하였습니다.)

능력이 되시는 분들께서는 입맛에 맞는 OS 기반의 다른 언어로 구성하셔도 됩니다. TCP/IP 관련 지식은 언어가 달라지더라도 구조가 거의 동일하기 때문에 금방 적용하실 수 있을 것입니다.(제가 boost.asio를 선택한 이유는, OS가 달라지더라도 코드는 동일하게 구성할 수 있기 때문에 차후 어떤 OS에서도 핵심 코드를 그대로 활용할 수 있습니다.)

그리고 클라이언트의 경우 루아로만 가지고 소스를 제작할 예정이기 때문에, 루아의 전반적인 사용법 및 루아에서의 PiniAPI의 사용법을 어느정도 알고 계셔야 합니다.


이 강좌를 통해 이루고자 하는 목표는 "피니엔진으로 개발한 게임에서의 네트워크 기능 추가" 입니다.
네트워크 기능이라 함은 채팅, 쪽지, 새 버전 알림과 같은 기능에서부터 나아가서는 실시간 네트워크 서비스와 온라인 서비스 구현을 뜻합니다.

추가로, 루아 언어를 기반으로 하는 다른 엔진에서의 네트워크 기능 추가까지 나아갈 수 있을 것입니다.
(대표적인 루아 기반 엔진으로는 Love2D, Defold 등이 있습니다)

피니엔진 자체가 '비주얼 노벨' 제작에 특화된 엔진이라는 특성에 맞춰, 강좌에서는 간단한 예시들을 들면서 진행할 예정입니다.



앞으로 진행하게 될 강좌의 목차는 대략 아래와 같이 정하였습니다.

1. TCP/UDP로 각각 Hello World를 클라이언트에 출력하기
2. 에코서버 제작
3. 채팅서버 제작


강좌가 얼마나 길어질지는 저도 잘 모르겠습니다.
제가 수시로 강좌를 올릴 여건이 안되지만 시간나는대로 강좌를 계속 진행하도록 노력하겠습니다.


추가) 피니엔진 관련해서 궁금하신 점 있으시면 질문 해주세요. 제가 도와드릴 수 있는 선에서 도와드리겠습니다.
카페에 강좌가 많이 없습니다. 도움이 필요하시다면 그쪽에 관해서도 시간내어 강좌를 쓸 수 있도록 해보겠습니다.


<강좌를 시작하기에 앞서>

앞으로 강좌에 소스코드가 많이 나올겁니다.
이에따라, 루아 코드와 LNX 스크립트를 배경색으로 구분하여 표기하도록 하겠습니다.

<루아 코드, C++>
1
2
3
4
5
6
--함수 정의 코드는 여기에 적어주세요.
 
local function m(fileName)
    --[스크립트] 매크로가 불리는 시점에 실행 될 루아 코드를 적어주세요.
end
return m
cs

<LNX 스크립트> (각주: LNX 스크립트는 피니엔진에서 사용되는 스크립트입니다)
1
[스크립트 실행="아니오" 파일명="socket.lua" ]
cs

이를 토대로 조금이라도 덜 헷갈리셨으면 합니다. 감사합니다.


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함