현재, PC package game을 기획 중이다.
기획 중인 게임에 seamless loading을 적용하고 싶다.
UDK로도 seamless world의 구현이 가능한가?
-------------------------------------------------------------
Answer>
결론부터 말하면,
UDK로도 game의 형태에 관계 없이,(PC, online, iPhone, ...)
충분히 seamless 구현이 가능합니다.^^
다만, level streaming에 대한 지식과 경험을 충분히 갖출 필요가 있습니다.
level streaming에 대해서는 아래 link를 참고하시고요.
http://udn.epicgames.com/Three/LevelStreamingHomeKR.html
http://udn.epicgames.com/Three/ContentStreamingKR.html
구현하실 때, 주의할 부분이 있다면,
game이 play되면서, loading이 동시에 진행되기 때문에,
경우에 따라서는 player가 가려는 지역이
아직 loading이 안되는 상황이 수시로 발생할 수 있다는 점입니다.^^;;;;
이런 상황이 발생할 경우, player는 바로 낙사합니다.T_T
따라서, player의 이동 경로와 속도에 따라서,
미리 loading을 하도록,
s!crip과 kismet을 잘 조정하는 게 제일 중요하고요.
(그리고, 안쓰는 level은 unload하는 것도 중요합니다.^^;;;;)
stream level loading 이후에 AI, item, event, ... 등의 처리도
매끄럽게 처리해 주는 것도 아~~주~~~ 중요합니다.
혹시, 공간 이동(teleport)을 할 경우에
공간 이동(teleport)으로 도착할 지역의 level을
미리 loading할 필요가 있습니다.
이 또한 제대로 처리하지 않으면,
공간 이동을 하자마자, player는 또 낙사하게 됩니다.T_T
공간 이동의 경우, 개발자가 예언자가 아닌 이상,
player의 선택지를 미리 파악한다는 것은 불가능하므로..@_@;;;
seamless의 본질에서는 벗어나겠지만..^^;;;;;
불가피하게 loading 화면을 보여주면서,
대기하는 부분도 구현할 필요가 있습니다.
(대부분의 online game은 effect나 motion을 길~~게~~해서
시간을 끄는 방식으로 자연스럽게 시간 지연을 연출하기도 합니다.^^;;;;;;)
그리고, 'class WorldInfo'에
아래와 같은 member 변수가 선언되어 있습니다.
var(WorldInfo) const editconst editinline array
따라서, worldInfo에 접근할 수만 있다면,
streamingLevels의 상태를 언제든지 알 수 있습니다.
예를 들어,
3번 level이 현재 loading이 되어서 보이는 지를 검사하려면,
아래와 같이 쓰시면 됩니다.^^
if( worldInfo.streamingLevels[ 3 ].bIsVisible ){
//보임.
}else{
//안보임.
}//else
기술적으로는 UDK로도 충분히 seamless를 처리할 수 있는 기반이
이미 마련되어 있지만, 자연스럽고 부드럽게 처리하기 위해서는
정성이 많이 필요합니다.^^;;;;;;;;;
그렇지 않으면,
낙사를 자주 보시게 될 거에요.T_T
Tag:
안기훈, Kee Hoon Ahn, Unreal, UDK, iPhone, iPad, app, 앱, iOS