GameForFun

블로그 이미지
by PforPepsi

TAG CLOUD

  • Total hit
  • Today hit
  • Yesterday hit

'목록들'에 해당되는 글 118건

  1. 2014.03.04
    [GameDev] 스크랩 -3- Technical Document 가 필요한 이유
  2. 2014.03.04
    [GameDev] 스크랩 -2- Iterative design
  3. 2014.03.04
    [GAME DEV] 스크랩 -1- 스토리, 삶의 투영(?)
  4. 2014.01.29
    [리뷰] Strike Vector
  5. 2014.01.05
    [Valdis Story: Abyssal City] 리뷰
  6. 2013.12.20
    [NGUI] Panel과 Depth에 대한 개념.
  7. 2013.12.16
    [JOURNEY] 모래 표현 방법,
  8. 2013.12.13
    [NGUI] 입문기.
  9. 2013.09.02
    기대되는 게임 #2
  10. 2013.09.02
    기대되는 게임 #1

http://www.gamedev.net/page/resources/_/creative/game-design/removing-the-tech-from-design-document-r3305

AND

http://www.gamedev.net/page/resources/_/creative/game-design/the-dark-side-of-iterative-design-r3163

AND

http://www.gamedev.net/page/resources/_/creative/game-design/considering-the-implications-of-player-choice-player-freedom-and-game-purpose-in-modern-game-design-r3269

AND

http://store.steampowered.com/app/246700/

Strike Vector는 PVP 중심의 비행 슈팅 게임이다.

Strike Vector의 특징들을 나눠서 얘기해보도록 하자.

[공격 ]
- 먼저 기본적인 조준/공격은 모두 마우스로 이뤄진다. 마우스로 조준을 하고, 좌/우클릭을 사용하여 무기1/2를 사용할 수 있으며, 특수한 공격장비가 존재하는데 이는 q버튼을 이용하여 사용한다.

[조작법]
이 게임에서는 기체의 움직임 상태를 2가지로 나누는데 각각 조작법은 다음과 같다.

1. Normal 
- 기본적인 비행상태, 아무 조작이 없으면 마우스가 향하는 방향으로 방향을 바꾸며 전진을 한다.  ad를 사용하여 좌/우선회(? 빙글 도는거)를 할 수 있으며 w/s를 눌러 속도를 조절할 수 있다고한다.

2. Hover
- 비행기가 앞으로 움직이지 않으며, a d를 이용해 좌우,  r f를 이용해 상하로 이동이 가능하다. 

[기체]
기체는 기본적으로 3파트로 나뉘며, 각각의 기능은 아직 모르겠음.

[무기/ 특성 선택]
해당 게임에는 무기와 특성같은것이 존재하는데, 무기는 좌/우클릭을 이용해 탄을 발사하는 것을 말하고, 특성은 Active 특성과, passive 특성으로 나뉜다.
Active 특성은 q버튼을 눌러서 사용하며, 각각의 특성마다 쿨타임이 존재하고, 쿨타임이 다시 돌아오면 해당 특성을 다시 사용할 수 있다. (지뢰 띄우기, 부스터 발동 등)

Passive 특성은 기체가 가진 고유의 능력을 추가하는 것으로, 속도증가, 감지범위 조작 등이 존재한다.

게임의 기본적인 특성은 위에 말한것이 전부이고 이제 게임을 플레이한 소감을 말해보자면 '실망스럽다' 라고 표현하고 싶다.

내가 이 게임이 눈에 뜬 이유는 트레일러에서 본 복잡한 구조물 사이사이를 피해가며 상대방의 뒤를 잡는 그런 게임을 기대했기 때문이다. 하지만 실제 게임은 그냥 결국 잘맞추는 놈, 다굴까는쪽이 이기는 게임이 되어버린 느낌이다.
애초에 플레이어들은 복잡한 구조물 사이로 재빠르게 들어가 적을 따돌리는 방법이 아닌 복잡한 구조물에 Hover상태로 숨어서 저격, 혹은 그냥 넓은 곳에서 전투를 선호하는 편이라, 구조물에 의미가 없고, 이로인해 뒤를 잡아서 적을 부수는 게임이 아닌, 그냥 잘 맞추는 놈이 이기는 게임이 되어버린다.

속도감에 대해 이야기하자면, w를 누르면 속도를 증가한다고 적혀있긴 하지만, 실제로 증가하는 것인지조차 모르겠고, 진짜 속도감을 느끼는 것은 바로 Active 스킬중에 부스터를 사용했을 때, 그리고 특정 구조체를 통과하여 일시적으로 속도가 대폭 증가했을 떄 뿐이다. 개인적인 의견이지만 짧은 부스터 기능을 넣었으면 훨씬 좋지 않았을까 하는 생각이 든다.

따라서 전체적인 느낌은 그냥 그런 슈팅게임이라고 할 수 있다.

위의 내용은 특이하게 키보드의 w버튼이 게임에서 작동을 안해서 적은 내용인데, Xbox360 패드로 해당 게임을 플레이해본 결과는 상당히 만족스럽다.

Hover 와 Normal모드를 오가며 Hover상태의 재빠른 방향전환과 normal모드의 가속의 두가지 장점을 잘 이용하는 것이 게임의 핵심이고, 이로인해 속도감이 넘치는 게임플레이가 나온다. 이로인해 다른 게임들과 다르게 아무것도 없는 텅빈 하늘에서의 전투도 긴장감이 넘치며, 거기에 엄폐물이 추가됨으로써 더욱 전락적인 움직임이 가능해지는 게임이 되었다.

따라서 패드로 플레이한 나의 느끼은 훌륭하다고 평가하고싶다.

'잉여잉여' 카테고리의 다른 글

[Valdis Story: Abyssal City] 리뷰  (0) 2014.01.05
기대되는 게임 #2  (0) 2013.09.02
기대되는 게임 #1  (0) 2013.09.02
[기획] Feedback Loop  (0) 2013.08.07
맞춤법 검사  (0) 2013.01.31
AND

  Valdis Story: Abyssal City는 Endless Fluffy Games에서 제작한 액션 플랫포머 게임이다. (http://www.valdisstory.com/)

장점:

1. 훌륭한 그래픽
- 캐릭터들이 전체적으로 SD캐릭터라서 귀엽게 둥글둥글하게 그려진 반면, 표현이 굉장히 깔끔하고 전투에 돌입하게 되면 화려한 전투동작으로 눈을 즐겁게 해준다.

2. 다양한 스킬과 공격 모션.
- 보통 타 액션 게임들은 플레이어가 무기를 바꿔도 공격 자세는 안바뀌는데 필자가한 Reina라는 캐릭터는 손, 곤봉, 해머 라는 3가지 공격 스타일을 다룰 수 있었다. 또한 자신의 취향에 맞게 스킬트리를  찍을 수 있으며, 마법 또한 4 * 6(마법의 속성)가지의 마법중에서 자신에게 맞는 마법을 섞어 사용할 수 있다는 점이 흥미롭다.

3. 화려한 전투
- 이게 게임의 가장 핵심 요소인데 이단 플레이어는 간단한 조작으로 화려한 플레이를 볼 수 있다. 기본공격, 마법공격, 필살기(Focus Mode), 그리고 보조 캐릭을 설정하여 자신이 원하는 공격 스타일을 만들 수 있다는 점이 좋다.

단점:

1. 미션 시스템 + 지도
- 보통 플레이어들은 뭐가 메인 미션이고 뭐가 서브 미션인지를 알기 원한다. 반면, 이 게임은 이런것을 표현해주는 미션시스템이 너무 부실하다. 스토리를 진행하면서 깨야할 미션이 플레이되는 것이라곤, 맵에 글씨 한줄이 전부이다.(ex: 어느 마을로 가시오) 다른 던전으로 가는 길들이 딱히 특수장치로 막혀있지 않은 시스템인 게임에서 마을의 위치조차 알려주지 않고 마을을 찾으라는 것은 플레이어의 시간을 낭비하는 것이며, 여차하여 다른 지역의 보스를 깨버리면 이벤트 시스템이 발동하는데, 플레이의 흐름상 캐릭터들이 무슨 소리를 하는지도 모르는 상황이 와버리게 된다.  또한 지도가 존재하지 않고 자신이 속해있는 구역만 표시되어 미션을 진행하기에는 정말 최악의 시스템을 갖추지 않았나 하는 생각이 든다.
 정말 이 게임에 지도와 목표를 표시만 해준다면, 지금보다는 더욱 재밌는 게임이 될 것이다.

2. 적의 공격과 회피 시스템
- 액션 시스템의 묘미는 적의 공격을 적절한 타이밍에 반격, 혹은 회피하는 것에 묘미가 있지 않나 한다. 그리하여 적의 동작을 미리 파악하여 회피를 하는 묘미가 있어야 하는데, 해당 게임은 적의 동작 준비시간이 짧을 뿐더러, 피하기 애매한 범위 공격까지 보스들이 마구 시전함으로 필자의 속을 썩인다.  또한, 회피시스템이 밑버튼 + 좌우를 누르면 좌우로 대시하면서 회피하는 시스템인데, 이 또한 화려한 전투를 하는 중에 원치않게 회피를 여러번 하게 되는 경우가 발생하게 되는 조작을 갖추고 있어 게임 플레이에 단점을 부여한다.

3. 너무 많은 퍼즐과 중요 조작감의 불편함.
- 해당 게임은 액션게임치고 퍼즐적인 요소가 너무 많다. 길을 뚫기 위해선 매번 퍼즐형태의 문을 열어야 하며, 심지어 숨은 보물을 찾기위해서 추가적으로 퍼즐 요소를 풀다보면 동일한 맵의 퍼즐을 10번 이상은 풀어야 한다. 또한 퍼즐을 풀기 위해서는 마법을 사용하여 퍼즐을 풀어야 하는데, 문제는 흔히 게임에 존재하는 이중 점프 조차 마법 칸을 차지한다는 것이 문제이다. 
해당 게임이 퍼즐에 필요한 요소들을 다른 버튼에 부여했으면 더욱 좋았을 것이라는 생각이 든다. 물론 한번깬 퍼즐도 그냥 열린 상태였으면 더더욱 좋았을 것이다.

4. 스토리
- 이것은 필자가 이해를 못한것인지, 스토리가 않좋은 것인지 몰라 짧게 적겠다.
일단 필자가 느끼기에는 스토리가 중반부터 시작되는 감이 있다. 다양한 캐릭터가 존재하는데 이는 주인공과 이미 아는 사이지만, 플레이언는 모르는 상태이기 때문에 그들의 이야기를 이해하는데 어려움의 있지 않나 싶다.
또한 앞서 말한(1번) 뚫려있는 장소는 갈 수 있다 라는 점때문에, 원치않게 지금 깨야할 보스가 아닌 다른 보스를 깨서 이벤트 씬을 볼 수 있기에 스토리의 흐름을 더욱 방해하는 요소가 아닌가 한다. 

'잉여잉여' 카테고리의 다른 글

[리뷰] Strike Vector  (0) 2014.01.29
기대되는 게임 #2  (0) 2013.09.02
기대되는 게임 #1  (0) 2013.09.02
[기획] Feedback Loop  (0) 2013.08.07
맞춤법 검사  (0) 2013.01.31
AND

NGUI를 잘 다루기 위해서는 위의 2가지를 잘 알아야 ui를 원하는 순서대로 그릴 수 있다.

Panel - 한 화면이라 생각하면 편하다.
Depth - 깊이인데, 0에 가까울수록 깊고, 값이 클수록 더 앞에있는 UI이로 정의된다.

Panel을 한 화면이라고 말한 이유는 Panel의 Depth가 최우선시 되기 때문이다.
가령 Panel1의 Depth를 1, Panel2 - Depth 2라고 가정하고,
Panel1 안에 여러 ui를 넣고 그 UI들의 Depth를 100000,200000 이렇게 설정한다 한들, Panel1안에 있는 UI들은 Panel2가 그려지기 전에 그려진다.
이유는 간단하다, Panel1의 Depth가 Panel2의 Depth보다 작기 때문이다.

또 한가지 헷갈리는것이 바로 Parenting인데, Panel2가 Panel1의 자식에 속해있다고 해서 Panel2 자체를  Panel1안에 존재하는 오브젝트로 보지 않고, 다른 오브젝트로 보게 됨으로 이를 주의하도록 하자.

이름(Depth)
Panel1(1)

    Object1(20000)
    Object2(30000)
    Panel2(2)
        Object3(3)
        Object4(4)
    Object5(2)

위의 예시를 보면 Panel1안에 Panel2가 있지만 Panel2 안의 오브젝트들은 전부 Object1, Object2, Object5가 그려진 다음에 그려진다.

따라서 UI가 그려지는 순서는 다음과 같은 흐름으로 그려진다고 보면 된다.
Panel들을 Depth순으로 정렬 -> Depth가 가장 작은 Panel안에 있는 오브젝트들 정렬 한 뒤 그리기. -> Panel을 순차적으로 마저 그린다.

AND

http://www.g4tv.com/thefeed/blog/post/722573/thatgamecompany-programmer-details-the-sand-technology-in-journey/


-요약-

1 - 3장의 height map을 이용 
1.1 지형 height map 
1.2 모래파도 height map(바람불때 모래가 쓸려나가는 효과)
1.3 loose sand height map - 플레이어 주변의 모래 높이를 결정 (플레이어가 움직이거나, 넘어질때 파이는 효과를 위한 height map인듯)

2 - Texture사용 
모래가 반짝이는 표현은 텍스쳐를 이용해서 했다는데....  더 찾아봐야할듯.

'프로그래밍' 카테고리의 다른 글

[Google] In-App 결제 API 에러.  (0) 2013.07.12
[IOS] Inapp 문서  (0) 2013.06.05
[IOS] INAPP 관련  (0) 2013.06.04
안드로이드 보안  (0) 2013.05.03
Cryptography 와 NetworkStream 연동 문제.  (0) 2013.05.03
AND

이제 시대에 뒤떨어진 EZGUI를 뒤로 버리고

Next Generation UI인 NGUI를 익히고자 이 글을 쓴다.


먼저 NGUI를 얼추 만지고 나서의 느낌은 [간편] 하다의 느낌이 강했다.

EZGUI에서는 여러가지의 옵션설정으로 인해 Inspector창이 지저분했고, 애니메이션 시스템도 복잡하여 사실상 애니메이션은 따로 스크립트를 통해 진행했었는데,  NGUI의 경우 대부분의 기능들이 아주 기본적인 요소은 UISprite를 재활용하여 진행하는 방식이라 간단하면서도 한편으로는 조합을 통해 더욱 다양하게 UI를 원하는데로 조작할 수 있음을 느꼈다.

UISprite의 재활용이라 함은,  가령 체력바와 같은 ProgressBar의 경우 뒷판인 Background, 앞에 게이지가 찰 ForeImage를 각각의 UISprite로 배치한뒤, ForeImage 내부인자인 FillAmount를 조절하여 ProgressBar를 구현하는데, 이는 UNITY3D의 기능과 유사하게 레고를 조립하는 느낌으로 만들어 진것 같다.


NGUI에서 Atlas의 관리법은 다음처럼 이루어진다.

Atlas를 생성할 오브젝트를 만들고 -> UIAtlas라는 Component를 추가 -> 여기에 원하는 Material을 설정한 뒤, 원하는 이미지들을 추가해주면 Atlas 오브젝트가 생성되는데, 추가된 이미지들은  해당 Atlas 데이터에서 이름으로 검색이 가능하다.

Atlas 자체를 GameObject형태로 관리하는것에서의 장점은 외부로부터 생성된 Atlas를 언제나 동적으로 사용 가능하다는 것에 있는것 같다.

기존에 EZGUI는 Atlas가 생성이되면 그 Atlas에 대한 설정은 우리가 맘대로 볼 수 없는 형태였는데 NGUI같은 경우에는 특정 Atlas에 들어있는 이미지는 해당 이미지 이름으로 값을 얻어 올수 있는 구조이기 때문에,  언제든지 외부에서 새로운 Atlas를 Asset형태로 불러올 수 있고, 해당 Atlas에 속해있는 이미지의 이름만 알면 언제든지 그 이미지를 사용할 수 있다.

여기에 잠시 Atlas를 asset형태로 만들고 외부에서 새로운 atlas를 불러오는 기능을 만들어보자면 다음과 같다.

먼저 assetbundle을 만들 코드를 생성하자.


using UnityEditor;
using UnityEngine;
using System.Collections;

public class ImageBundleCreator : Editor {

//메뉴에 AssetBundleCreate이라는 항목 아래 CreateImageAsset버튼이 생기는 명령어.
	[MenuItem("AssetBundleCreate/Create Image Asset")]
	public static void CreateImageBundle()
	{
		string path = EditorUtility.SaveFilePanel("Save ImageBundle","","ImageBundleAsset","");

		Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);

		foreach(Object o in selection)
		{
			Debug.Log(o);
		}

		BuildPipeline.BuildAssetBundle(null,
			selection,
	       path,
	       BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets | BuildAssetBundleOptions.UncompressedAssetBundle,
	       BuildTarget.Android);

		Debug.Log("IMAGE BUNDLE CREATED");
	}
}

위의 스크립트를 생성하고, Atlas오브젝트를 Asset으로 만든뒤 해당 Asset을 클릭한 상태에서 Createa Image Asset을 눌러주자.

그 뒤 외부에서 Atlas AssetBundle을 읽어올 Manager스크립트를 다음과 같이 작성.




using UnityEngine;
using System.Collections;

public class ImageBundlemanager : MonoBehaviour {

	public string path ;

	public UISprite m_Sprite;

	public AssetBundle m_AssetBundle;
	public UIAtlas m_Atlas;
	public string m_SpriteSpriteName;
	// Use this for initialization
	void Start () {
		path = Application.dataPath + "/../Documents/ImageBundleAsset.zip";
		//m_AssetBundle = AssetBundle.CreateFromFile(path);
		LoadCostumeBundle();
		//m_Atlas = (UIAtlas)m_AssetBundle.Load("ImageBundle");
	}
	
	// Update is called once per frame
	void Update () {
		if(Input.GetKeyDown(KeyCode.A))
		{
			m_Sprite.atlas = m_Atlas;
		}

		if(Input.GetKeyDown(KeyCode.Space))
		{
			m_Sprite.spriteName = m_SpriteSpriteName;
		}
	}


	public void LoadCostumeBundle()
	{
		StartCoroutine(ELoadCostumeBundle());
	}
	
	public IEnumerator ELoadCostumeBundle()
	{		
		//while(!m_WeaponBundleDone)
		//{
		//	yield return new WaitForFixedUpdate();	
		//}
		WWW url = new WWW("file://"+path);
		int framecount = 0;
		while(url.progress != 1)
		{
			framecount++;
			yield return new WaitForSeconds(0.5f);	
		}	
		yield return new WaitForSeconds(0.5f);
		yield return url;
		m_AssetBundle = url.assetBundle;
		if((m_AssetBundle == null || url.bytes.Length == 0 || url.error != null))
		{
		}else
		{
			url.Dispose();
			url = null;
		}

		Object o = m_AssetBundle.Load("ImageBundleObject");
		Debug.Log(m_AssetBundle.Contains("ImageBundleObject"));

		m_Atlas = ((GameObject)o).GetComponent();

		Debug.Log("ImageBundle Set");
		yield break;
	}
}

이제 Manager를 만들어주고 m_SpriteSpriteName을 설정한 뒤 Space를 눌러주면 외부에서 불러온 Atlas의 m_SpriteSpriteName이 m_Sprite의 이미지로 설정이 된다.

AND

'잉여잉여' 카테고리의 다른 글

[리뷰] Strike Vector  (0) 2014.01.29
[Valdis Story: Abyssal City] 리뷰  (0) 2014.01.05
기대되는 게임 #1  (0) 2013.09.02
[기획] Feedback Loop  (0) 2013.08.07
맞춤법 검사  (0) 2013.01.31
AND

'잉여잉여' 카테고리의 다른 글

[Valdis Story: Abyssal City] 리뷰  (0) 2014.01.05
기대되는 게임 #2  (0) 2013.09.02
[기획] Feedback Loop  (0) 2013.08.07
맞춤법 검사  (0) 2013.01.31
[MAC] 사용법 등등.  (1) 2013.01.15
AND

ARTICLE CATEGORY

목록들 (118)
[Unity3D] (39)
그래픽관련 (13)
잉여잉여 (25)
프로그래밍 (27)
노래♬ (3)
Game_Design(기획) (3)

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2024/05   »
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

ARCHIVE