ProudNet for Unity 3D close beta testing is in progress

by nettadmin / 2011. 08. 24. [16:18]

Now we are working on ProudNet for Unity 3D beta testing.

ProudNet for Unity 3D is game server & network engine for 'Unity 3D' that use generally nowadays.

ProudNet and ProudNet for Unity3D are both include Packet Encryption, Packet Compressing, RPC function, etc. Also it makes easy to develop online game with Shard server developing module and DB cache system.

You can use C++ and C# for server side developing. In addition you can hold a couple of 10,000 concurrent users with only 1 server process. If you construct with multi-shard then it will hold more concurrent users!

C++ API of ProudNet for Unity3D and ProudNet is exactly the same. Also it is possible to play between C++ Clinet and Unity3D Clinet!
You can develop with FPS, MMORPG, etc, what ever you want!

Of course you can use ProudNet API's P2P related function on Unity3D

Please request trial version through our website 

http://www.nettention.com

etc.

Attend at "ChinaJoy 2011"

by nettadmin / 2011. 08. 01. [09:43]

We will attend at ChinaJoy 2011.

Conference Information
Date: July, 28th, 2011 ~ July, 29th, 2011
Location: New International Expo Center, Shanghai, China

We will see you there.

Latest News

ProudNet for Flash가 베타 단계에 있습니다.

by nettadmin / 2011. 07. 20. [16:53]

ProudNet for Flash 클로즈 베타 버전 단계에 있습니다.

 

ProudNet for Flash는 요새 대세인 '웹 게임', '소셜 게임'을 위한 게임 서버&네트워크 엔진입니다.

 

ProudNet과 ProudNet for Flash에 있는 패킷 암호화, 패킷 압축, RPC 기능등이 있고, 분산 서버 개발 모듈과 DB cache 시스템은 쉽게 온라인 게임을 만들 수 있게 합니다. 서버사이드 개발 언어는 C++과 C#이 사용 가능하고요. 1개 서버 프로세스에서 동시접속 수만명이 가능합니다. 멀티 샤드로 구축하면 훨씬 더 늘어나겠죠.

 

ProudNet for Flash와 C++용 ProudNet의 API는 동일하고, 심지어 C++ 클라이언트와 Flash 클라이언트간 멀티플레이도 가능합니다! 성능도 잘 나옵니다. ProudNet for Flash는 실시간 멀티플레이 MMORPG(턴 방식이 아니라, World of Warcraft처럼 실시간 전투)도 개발할 수 있게 해줍니다.

 

당연히, ProudNet API에 있는 P2P 관련 기능도 Flash에서 쓸 수 있습니다. 다만, 플래시는 TCP만 사용하기 때문에 플래시 클라이언트와 다른 클라이언트는 P2P가 relay로 작동한다는 차이만 있을 뿐입니다.

 

아직 소셜 게임이나 웹게임에서 MMORPG류 장르는 미개척지입니다. ProudNet for Flash를 사용해서, 그 미개척지의 정상에 서보십시오!

 

(평가판 신청은 http://www.nettention.com/ 에서 해주세요.)

etc.

"서울 게임 콘텐츠 센터" 1기 입주기업 중 성과 평과 1위 득!

by nettadmin / 2011. 07. 13. [10:54]

서울시 SBA에서 지원하는 "서울 게임 콘텐츠 센터" 1기 입주기업 10개 중 저희 회사 넷텐션이 성과 평가 1위를 득 했습니다!

 

두둑한 포상도 주어졌습니다! 룰루랄라~

 

서울시 SBA에서 지원하는 "서울 게임 콘텐츠 센터"... 우량 신생 게임 기업들에게는 좋은 지원이 됩니다. 많은 관심 바래요.

 

etc.

Conclude an agreement with Funtree Co., Ltd.

by nettadmin / 2011. 06. 22. [07:45]

June, 30th, 2011

We concluded an agreement with Funtree.

ProudNet will use on "Born to Fire" project.

We will do our best all the time.

Thank you.

Notice

Conclude an agreement with NNG Lab Co., Ltd.

by nettadmin / 2011. 06. 01. [07:44]

May, 30th, 2011

We concluded an agreement with NNG Lab.

ProudNet will use on "Journey to the west" project.

We will do our best all the time.

Thank you.

Notice

Attend at "LOGIN 2011 Conference"

by nettadmin / 2011. 05. 12. [09:42]

We will attend at LOGIN 2011 Conference.

Conference Information
Date: May, 16th, 2011 ~ May, 18th, 2011
Location: Meydenbauer Center, 11100 NE 6th Street, Bellevue, WA, USA

We will see you there.

Latest News

Attend at "ITS Games 2011"

by nettadmin / 2011. 05. 12. [09:42]

We will attend at "ITS Games 2011"

Event Information
Data: May 16th, 2011 ~ May 17th, 2011
Location: Vista Hall, Walker Hill Hotel, Seoul, South Korea

I look forward see you there.

Latest News

패킷 송수신 코딩 중 실수를 예방하는 법

by nettadmin / 2011. 04. 29. [14:56]

넷텐션에서 타사 파견 기술지원이나 기술 영업 미팅을 나가서 개발중인 게임 소스를 보다 보면 간혹 패킷 송수신 처리를 실수하거나 관련 고생을 하는 경우를 자주 봅니다.

 

그럴만도 한게, 패킷 송수신 처리는 많은 노가다 코딩을 수반하기 때문입니다. (아래는 그 예)

// Message header ID definitions
#define Message_Knight_Move_ID 12
#define Message_Knight_Attack_ID 13// Message format definitions
struct Message
{int m_msgID;
};
struct Message_Knight_Move:public Message
{int m_id;   float m_x,m_y,m_z;
};
struct Message_Knight_Attack:public Message
{int m_id;int m_target;int m_damage;
};// A function which send a formatted message
void Knight_Move(int id,float x,float y,float z)
{Message_Knight_Move msg;msg.m_msgID=Message_Knight_Move_ID;msg.m_id=id;msg.m_x=x;msg.m_y=y;msg.m_z=z;Send(msg);
}// A function which send a formatted message
void Knight_Attack(int id,int target,int damage)
{Message_Knight_Attack msg;msg.m_msgID=Message_Knight_Attack_ID;msg.m_id=id;msg.m_target=target;msg.m_damage=damage;Send(msg);
}// Identified a received message and call an appropriate function for message handling
void DoReceivedMessage(Message* msg)
{switch(msg->m_msgID){case Message_Knight_Move_ID:{Message_Knight_Move* msg2= (Message_Knight_Move*)msg;Do_Knight_Move(msg2->m_id,msg2->m_x,msg2->m_y,msg2->m_z);}break;// ... cases for other message typescase Message_Knight_Attack_ID:{Message_Knight_Attack* msg2=(Message_Knight_Attack*)msg;Do_Knight_Attack(msg2->m_id,msg2->m_target,msg2->m_damage);}break;// ... cases for other message types}
}

코딩하는 것도 노가다이지만, 무엇보다도, 코딩하다가 행여나 실수라도 하면 찾기 힘든 버그가 되기도 합니다. 오랫동안 소스를 유지보수하다보면 저기서 실수를 하는 사람들이 꼭 있습니다. 이 글을 쓰는 이유는, 오늘도 그런 실수를 하는 케이스를 제보받았기 때문입니다. (프라우드넷 쓰는 업체는 아니었음)

 

저런 노가다 코딩을 사람 대신 기계가 자동으로 해줄 수 없을까?라는 할 수 있죠. 그리고 나온 결론은 RPC or RMI를 쓰자~! 입니다. 다행히 RPC나 RMI는 이미 Java나 Win32 등에서도 제공하지만 그것들은 게임에 쓰기에는 너무 범용적이고 불필요한 기능이 많죠. 시각을 다투는 게임 프로그램에서는 부담스럽습니다.

 

그래서 RPC 시스템을 직접 만드는 것이 좋습니다. 그렇게 하면 사람이 직접 상기 코드를 짜는 것과 처리 속도가 같습니다.

 

가령,

Knight_Move([in] int id,[in] float x,[in] float y,[in] float z);
Knight_Attack([in] int id,[in] int target,[in] int damage);

 

이렇게 선언해주면 위의 노가다 코드를 기계가 생성해주는거죠. 일도 쉬워지고, 무엇보다도 실수를 원천봉쇄합니다.

 

자체 RPC 시스템을 만드는 법은 Game Programming Gems 5에서 배현직님이 기고해 주셨습니다.

 

참고로, 프라우드넷에서도 같은 기능을 (물론 Game Programming Gems 책에 나온 것보다 앞서 있는 기능을 가진) 기능을 제공합니다.

Development Issues

프라우드넷 홍보영상

by nettadmin / 2011. 04. 13. [12:00]

etc.