2018년 10월 31일 수요일

[20181031] 진행중 : Theme : Treasure

기본 형은 나왔다.
( '_')y-~


코드는 배신 하지 않아.

설계에 고민했던 시간만큼.
딱 그 만큼의 가치를 손실없이 돌려줘.

2018년 10월 30일 화요일

[20181030] 구상 : Theme

각 공간에 Theme 를 적용함으로서 얻고자 하는 최종적인 모습중의 하나는 아래의 이미지와 같다.


이 Theme는 2가지를 필요로 한다.
  1. 특정 Object 가 배치될 장소.
  2. Object를 돋보이게 해줄 Tile.



+ Object 배치 장소의 경우.

Object는 특정 좌표를 점유할 수 있고 이는 곳 길을 막을 가능성이 있다는 것이다.
상자 같은 경우에는 열면 사라지기 때문에 상호작용을 통해서 길을 열 수 있지만, Theme 적용으로 배치될 Object 중에는 제거가 불가능한 녀석들도 포함되어 있다.


그리하여 요구되는 기능이란...
"Static 하게 길을 막을 가능성이 있는 Object" 가 "배치될 수 없는 좌표" 를 추려내는 것
...이다.

현재 공간은...
  1. "방 공간"
  2. "길 공간"
...두가지로 구분된다.

Theme 는 "방 공간" 에만 적용되는데, "방 공간" 은 내부가 직사각형 모양으로 비어있기 때문에 내부에 "길" 을 만들 필요가 없었다.
이제 "방 공간" 에 위에 언급한 "Static 하게 길을 막을 가능성" 이 생겨났기 때문에 길 데이터를 수집하고, 이 것을 Negative List 로서 활용할 것이다.


길을 생성하는 코드는 두가지가 있는데.
  1. 방 내부의 문과 문 사이를 연결한다.
  2. 방과 방 사이의 문을 연결한다.
이 경우에는 1번에 해당하는 기능을 활용할 수 있다.



+ Object 를 돋보이게 해줄 Tile의 경우

현재 Theme System은 각 "공간" 단위로 작동하고 지정된 Theme Tile 을 공간에 덮에 씌우는 형태이다.

위의 이미지에서 보여지는 것처럼 보물상자를 시각적으로 주목하게 하기 위한 기능은 "방 단위" 의 Theme System 에서는 지원할 수 없다.
"특정 좌표의 주변 Tile 을 재조정 하는 기능"
...이 필요하다.

Tile 재조정을 위한 Pivot 의 선택을...
  • Map의 Data 를 생성하는 시점에서 할 것인지.
  • Object를 배치하는 시점에서 할 것인지.
...를 선택할 필요가 있다.

Data 생성 시점에서 한다면 해당 기능을 Theme Tile System 에 통합 할 수도 있다.
Object 배치 시점에 한다면 코드 자체는 비효율적이지만 빠른 작업이 가능하다.



그러하다.
정리 다 했으니까 이제 작업하자.
( '_')y-~

> 관련 코드의 지식이 Reset 된 관계로
> 복기 차원에서 작성

2018년 10월 29일 월요일

[20181029] 잡설

아이고 제기럴.

Tile Build 관련 코드를 다시 보려니 머릿속이 백지가 되어있네. 허 허 허

( ^_^)y-~

> 읽자.
> 한 땀 한 땀.

[20181029] 잡설 : 요점

지난 게임은 구상이나 계획이 부족해서 작업이 막막했던 적은 없었다.

스테이지의...
테마를 정하고.
동선을 구상하고.
동선을 구체화하고.
방 내부의 동선을 구상하고.
타일을 디자인하고.
맵을 찍고. 다시찍고. 고쳐찍고. 그러다 타일도 고치고.
테마에 일반 몬스터가 필요하면 도트를 찍고.
A.I 를 설계 하고. 코딩하고. 테스트 하고 고치고 하고 고치고.
몬스터를 배치하고.
트랩을 배치하고.
아이템과 상점을 배치하고.
보스를 설계하고.
오지게 테스트 하고.
마지막으로 컷씬이 필요하면 만들고.

...하면 한덩어리가 끝났더랬는데 평소 쌓아온 고민과 산책때의 구상으로 어지간하면 해결됐다.

그런데...

이번 게임은 뭘 할때마다 머리를 많~~~이 굴려야만 뭐가 진행된다.

게임에 시뮬레이션 성향이 높아졌기 때문인지.
아니면 컨텐츠의 밀도가 높기 때문인지.
정확히 이유를 가늠할 수는 없다.
모르겠다기 보다는 이유가 너무 많다.

딱 한가지 확실한것이 있다면.

이 장르에서는 내가 오랜시간 쌓아온 "감각" 이라는 것이 전혀 통하지 않는다는 것이다.

지난 게임을 마무리 할 수 있었던 유일한 이유는.
초짜치고는 스테이지를 구성하는 요령을 빠르게 터득했기 때문이다.
심하게 고생했지만 어쨌든 요점이라고 부를만한 것에 도달했고 꾸역 꾸역 만들고 만들고 또 만들어서 마무리 했다.( 덕분에 게임에 눈여겨 볼만한 것이 동선 뿐이 없지만... )

이번엔 그런거 없다.
그래서 자꾸 멘붕이 오는 것 같다.
( @_@)y-~

최전선에서 컨텐츠를 이끌어나갈 요점 또는 기술.

이 녀석을 얼른 잡고 싶다.
게임이 산으로 가버리기 전에.
( '_')y-~

2018년 10월 26일 금요일

[20181026] Monster : Sentinel Golem

날씨에 몸이 그럭 저럭 적응하고 있습니다.
연신 재채기를 해대고는 있지만 이제 몸에 부담은 없네요.
적절한 가을 입니다.
( '_')y-~



Level 1 구성을 위한 작업을 진행중입니다.

유저를 맞이해줄 첫번째 던전을 위한...
  1. 정적 데이터를 동반한 간단한 진입점 구성과
  2. 연출용 Trigger 의 추가가 있었고
  3. 최초로 조우할 Monster 에 대한 작업
...까지 진행되었네요.


이중에서 오늘의 주제는 유일하게 보여주는게 의미 있는 "Monster" 작업입니다.


이전의 Concept 작업에서 만들어진 "Monster Concept No.17" 이 기반 입니다.

Golem 형으로...
기괴하지만 불쾌하지는 않은
그런 느낌적인 느낌을 전달하는 것을 목표로 신나게 작업을 진행했습니다.

< Idle2 x 1 >

< Idle2 x 4 >

< Idle2 x 8 >

하지만 작업을 진행하면 할수록...
  • 정녕 이래야만 하는 것인가.
  • "덤덤곰" 만들때 가볍게 만든다고 하지 않았던가.
  • 난 안되는 놈인가.
...같은 생각이 저를 괴롭혔는데요.

< Move x 1 >

< Move x 4 >

< Move x 8 >

27 개의 sprite 로 마무리 되었던 "덤덤곰" 과는 완전히 대조적으로
이녀석은 47 개의 sprite 가 동원되었기 때문입니다.
( o_o)y-~

< Attack x 1 >

< Attack x 4 >

< Attack x 8 >

손목과 눈, 그리고 머리를 갈아 넣은 결과물 치고는 디테일이 썩 맘에 들지는 않습니다.
그래도 느낌은 의도대로 담아낸 것 같아서 흡족한면도 있네요.

"정말 정말 다시는 여러장의  sprite 로 작업하지 않겠습니다."
...라고 다짐하고 싶지만 전 분명히 이 짓을 되풀이 할 겁니다. @_@

이 녀석 덕분에 오늘자 몸상태는 말이 아닙니다.
손목과 눈은 확실히 휴식이 필요한 상태가 되었고요.
본래 어제 작성했어야 했던 이 글도 오늘 작성하고 있습니다.
그래서 오늘의 남은 시간은 쉴 것 같습니다.



이 녀석을 만드는 과정에 이런 저런 추가 작업도 진행되었는데요.

그 중에는 A.I 관련 작업도 있습니다.

그 작업 덕분에 A.I 가 슬슬 외부 데이터의 힘으로 내부를 갈아 넣는 지경에 진입하게 되었고, 덤으로 전용으로 만들어졌던 A.I Class 를 한개 삭제할 수도 있었습니다.

앞선 작업과정에서 살살 진행해왔던 A.I 가변성을 위한 작업들이 이제 힘이 되어주는 것 같아 상당히 기쁘군요. ^_^

하지만 이 작업이 고도화 되면 될수록 툴의 필요성도 높아져갈겁니다.

데이터셋의 의미와 구조를 기억하는게 거진 불가능 하기 때문인데요.
충분히 많은 데이터셋이 광범위하게 만들어져 있고, 이미 그 녀석들도 제대로 기억하지 못합니다. @_@
그리고 그걸 매번 찾아보면서 세팅하는 것은 고문에 가깝지요. ㅜ_ㅜ

적정선에서 잘 끊어서 적당히 번거롭지만 쓸만한 시스템으로 마무리 할 수 있었으면 좋겠네요.



그럼 저는 평일의 휴식을 즐기러 가봐야겠네요.
모두들 흥겨운 불금 되세요.
( '_')y-~

2018년 10월 23일 화요일

[20181023] 잡설 : 욕망

있는거 잘 써먹을 생각을 해야 하는데...

보고 주워들은게 늘어나니까
이런 저런 공돌이적 욕망이 끓어오른다.



엄두도 못내고 있는 것들중에는 유전자 알고리듬 에 기반한 A.I 자동 조합 같은 것이 있었는데, 손 볼것도 만들것도 너무 많아서 완전 손 놓았고... @_@
( 다이서를 계속 진행했으면 이거에 시달리고 있었겠지... )

지금 당장은 맵 빌딩에...
스펠렁키, 아이작 ( 고정 크기 분할 공간 기반 )
엔터더건전 ( 이건 노드 확장이 아닐까... )
...에서 각각 사용된 맵 빌딩 로직을 게임에 추가하는 것이 그 욕망이다.

아무래도 맵의 신선함을 유지하는데에는 맵 빌딩 로직을 다양화 하는 것이 최선책으로 생각되기 때문이다.



위에 언급한 게임들의 영상을 수도 없이 돌려 보면서도 정확히 판단이 되지 않는 부분이 있었는데...
"엔터더건전"은 정적데이터만으로 방을 구성하는가?
"스펠렁키"는 동적 데이터를 방 구성에 사용하는가?
...같은 부분이다.

"스펠렁키"는 두가지 모두 사용하는 것으로 확인 했고
"엔터더건전"은 모르겠다 플레이 타임 100시간 찍으면 감이 올지도.



근데 뭐... 이랬거나 저랬거나 중요한 것은 아닌것 같다.
할 수 있느냐 없느냐가 그사람들에게 문제되진 않았을 테니까.
하느냐 마느냐 일뿐.



자 욕망을 배설했으니까.
다시 가변 크기 방에 어떤식으로 테마를 적용할지에 대해서 머리를 굴리자.

> 방 크기가 가변이라
> 특정한 테마를 단단하게 적용하고 싶을때
> 에로사항이 꽃피우고 있어서
> 이런 글을 작성한 것은 아니다. ( '_')y-~

2018년 10월 19일 금요일

[20181019] 200

200시간 달성.



기분상으로는 300 시간 정도는 한 것 같다.

300시간 달성할 때 즈음이면 게임이 나와 있어주려나.
그랬으면 좋겠네.
( '_')y-~

2018년 10월 17일 수요일

[20181017] Dungeon Start Scene

이 생활을 지속하면서 몸에 몇가지 변화가 있습니다.
그 중 하나가 날씨가 추워지면 쉽게 체한다는 것 인데요.

기온이 내려간 덕인지 지난 밤에는 체기가 있어서 이리 뒹굴 저리 뒹굴하다가 소화제를 한알 먹고 기절했습니다.

다행히 몸에 큰 무리는 없네요.
( @_@)y-~



작업 이야기로 들어가면...

Dungeon Start Scene 의 작업이 완료되었습니다.

이 Scene은 각 던전의 Theme 를 간접적으로 전달함과 동시에 유저를 맞이해줄 문지기의 역활을 해줄 녀석입니다.

현재 Dungeon 진입의 기본 흐름은...
  1. 첫 진입 이라면 Conversation Scene 으로 진입
  2. Dungeon Start Scene 진입
  3. Dungeon Loading 겸 Floor 표시 Scene
  4. Dungeon Start
...입니다.

이로써 Dungeon 관련한 기본 흐름은 모두 갖추었습니다.
( ^_^)y-~


이 작업은 이번 게임 개발에서는 쓸일이 없을거라 생각했던 Tiled 가 동원되었습니다.
물론 그 덕분에 Tilesheet 를 별도로 만들어야 했지요.

Tilesheet는 시도해본적 없는 스타일을 여러 참고 자료의 도움을 받아서 마무리 했습니다.
이름 모를 pixel art 제작자들에게 감사를 표합니다 ( o_o)/

< tilesheet >

Tiled 를 동원한 이유는 드로잉은 안되지만 저수준의 pixelart를 흉내낼 수 있는 입장에서 이 방법만이 적은 노력으로도 어느정도의 질을 보장해 줄 수 있기 때문입니다.

늘 그렇듯 말이죠. @_@

< tmx >

여기에 약간의 연출과 특별 제작한 shader 를 버무려서 마무리 되었습니다.


그럭 저럭 맘에 드네요.

뒤에 휑한 하늘에 구름도 배치해야 하고 뒤에 나무 같은 것도 몇개 넣어야 하지만 일단 여기서 마무리 해둡니다.
( 앞으로는 매 스테이지 제작에서 이 녀석을 먼저 작업하게 될테니 싫어도 손보게 되겠죠. )



이제 실질적인 Level 구성 작업을 해야만 하는 상황으로 왔습니다.
그리 하여 다음 작업은 Level 1 을 구성하기 위한 여~~~러 작업들을 진행 할 것 같습니다.

커피 한잔 하면서 잠시 쉬고 작업 구상을해야겠습니다.

다들 건강한 하루 되세요.
( '_')y-~

[20181017] 잡설 : 살고보자.

facebook 에서 옮겨옴.

-------------------------------------------------------

번아웃 전에는 이녀석들 없이도 잘 살았는데...
일단 살고보자.
( '_')y-~


2018년 10월 16일 화요일

[20181016] Shader - pixel size scale

번아웃에서 날려먹은 건강을 아주 조금씩 회복중입니다.
공부를 다시 시작하고 있지는 못하지만, 운동을 조금식 하고 산책도 하고 있네요.

저를 괴롭히고 있는 희미한 감기증상만 사라진다면 금방 회복할 것도 같은데요.
이거 쉽게 낫지를 않네요.
( o_o)y-~



"Dungeon Start Scene" 이라고 이름지은 것을 작업중입니다.

오래된 모 게임의 특정 스테이지 시작에서 항상 볼 수 있는 녀석을 "존경심을 담아" 카피 하고 있습니다.

이 프로젝트의 기본 모델이 되는 "톨네코의 대모험" 의 것을 가져오고 싶었는데요.
뷰가 제 프로젝트와 어울리지 않아서 작업이 산으로 가버릴 가능성이 높은지라 과감하게 버리고 다른 게임의 것을 빌려오기로 했습니다.

더 자세히 적으면 스포일러가 되어버리니 자세한 것은 작업이 마무리되면 공유하겠습니다.
( '_')y-~


오늘은 위에 언급한 작업을 처리하는 과정에서 만든 shader 에 대해서 남겨볼까 합니다.

retro game 들이 가끔씩 사용하는 pixel 의 크기( ? ) 를 조정하는 shader 인데요.

지금의 기술로 만든다면...
  1. 화면에 블러 처리를 해서 out focusing 효과를 줬다가
  2. 블러 처리를 점차 감소 시켜서 focus 를 바로잡는다
...는 방식으로 처리할 수 있겠죠.

뭔가 날로 먹을 방법이 없을까?
레스터라이즈 과정에 먹혀들어갈 마법의 flag 같은 것이 없을까?
...라는 일념으로 여기 저기 들쑤셔 봤는데 소득이 없었어서 직접 코드를 작성할 수 밖에 없었습니다.


제가 작성한 code 는 다음과 같습니다.


varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
uniform float u_pointscale;
void main()
{
 if( 1.0 < u_pointscale )
 {
    float tx = floor( ( v_texCoord.x * 100.0 ) / u_pointscale );
    float ty = floor( ( v_texCoord.y * 100.0 ) / u_pointscale );

    vec2 new_tex_coord = vec2( tx * u_pointscale * 0.01, ty * u_pointscale * 0.01 );
    gl_FragColor = v_fragmentColor * texture2D(CC_Texture0, new_tex_coord );
 }
 else
    gl_FragColor = v_fragmentColor * texture2D(CC_Texture0, v_texCoord );

}


전문성이 없는 분야의 코드라서 올려놓는 것이 상당히 부끄럽네요.

혹여 이 녀석을 가져다 쓰실분이 있다면 약간 손보시는게 좋습니다.
몇 가지 고려해야할 것들이 있는데 귀찮아서 그냥 넘겼거든요.
( @_@)y-~

그게 무엇인지는 비밀입니다.


오늘 작업은 여기 까지 입니다.
롤드컵을 켜놓고 저녁을 먹어야겠네요.
( +_+)y-~

> 20180225 Code Highlight 적용.

2018년 10월 11일 목요일

[20181011] 우아함

facebook 에서 옮겨옴

--------------------------------------------------

코드의 우아함과 거리감을 유지하는 만큼 작업 속도는 빨라진다.

하지만 결별한다면 리팩토링 하다가 숨쉰채 발견될 것이다.

( '_')y-~

> 답이 없는 만큼 깊이 있고
> 깊이 있기 때문에 도전할 가치가 있다.

2018년 10월 10일 수요일

[20181010] Action Info and Buff System Update

미묘한 계절이 왔습니다.
이 계절쯤 오면 집 안이 밖보다 추운경우가 많습니다.
덜덜 떨다가 밖에 나가면 몸이 편안해지죠.

그렇게 덜덜 거리며 작업중입니다. @_@



3일부터 10까지...
  • Action Info 추가 및 적용
  • Buff 기능 확장
...작업을 진행했습니다.


"Action Info" 는...
어떤 행동이 대상에게 어떤 효과를 제공하는가를 정의하는 데이터
...입니다.

행동이 성공했을 경우...
  1. Damage는 들어가는지
  2. Reaction은 무엇을 수행하는지
  3. Buff는 걸리는지
...등이 해당됩니다.

기본 설계를 마무리 하고 코드에 박혀 있던 녀석들을 테이블로 남김없이 빼낸이후, Actor간의 공.방 에 우선 적용되었습니다.
이후 Object 나 Trigger 등에도 적용될 겁니다.


Buff 기능 확장은...
  1. 기존에 더미 코드로 대충 생성해서 사용했던 Buff Table 을 외부로 빼내고
  2. 각 버프의 구현 코드에 박혀 있는 버프의 세부 설정들을 Table 로 옮기는 작업.
  3. 새로운 Buff인 DoT( Damage over Time ) 추가.
  4. Update 가 동반되는 Buff 를 Player 이외의 Actor 에도 적용
  5. 마지막으로 현재 작동중인 Buff 를 보여줄 U.I 의 추가
...등의 작업이 진행되었습니다.

각 작업들이 정말 번거로웠는데요. 이유는...
  1. 외부로 빼낼 시기가 늦었다는 것
  2. 명확한  Update Process 를 지난작업에서 잡아두지 않았다는 것
...때문입니다.

기억을 더듬어 보니 회사 다니던 시절 이 기능만은 단 한번도 해본적이 없더라구요.
대부분 Skill System 이나 A.I 를 했었던지라 처리 흐름에 대한 감을 잡는데 고생을 좀 했습니다.

그러다 보니...
  • 이렇게 뒤집었다가
  • 저렇게 뒤집었다가
  • 답이 안나와서 고민만 몇시간 하다가
  • 기분전환 삼아서 "샌드백 군" 도 넣고
그렇게 작업을 진행했네요. ( o_o)y-~


아무튼 마무리 되었습니다.

그리고 이 것으로 "덤덤곰" 관련 작업도 완전히 마무리 되었네요.
( DoT 가 필요했거든요. )


이어서 관련된 자잘한 작업을 몇개 처리하고
다음에 진행할 작업을 찾아봐야겠습니다.


그럼 다시 작업하러 갑니다.
다들 좋은 하루 보내세요.
( '_')y-~

2018년 10월 8일 월요일

[20181008] Monster : Mr.Sandbag

지난 일지에서...
"감기 걸리지 말고 환절기 잘 넘겼으면 좋겠다."
...라고 적었었는데 제가 바로 그 감기 기운에 시달리기 시작했습니다.

말이 씨가 된다더니...
( o_o)y-~



개발 시작한지 1년 하고도 10여일...
드디어 필요에 의해서 의도를 가지고 더미 몬스터를 만들어 넣었습니다.

각 종 테스트에서 큰 힘이 되어주겠죠.( ? )

< The death of Mr.Sandbag >

테이블에 넣은 데이터 확인 과정에서 이미 3번쯤 죽어주어서 자신의 존재 의미를 보여주었답니다.

< all ani x 1 >

< all ani x 4 >

< all ani x 8 >

이제 진짜( ? ) 작업을 하러 가야겠습니다.
( @_@)y-~

2018년 10월 3일 수요일

[20181003] 망각

작업 한 것들이 점~~~점 많아지다보니

기능을 넣어두고 내가 왜 넣었는지 이게 뭐하는 것인지 잊어버린다.

지난 게임 만들면서도 겪은 일이라 당황스럽진 않지만 뭔가 대책은 필요한 것 같다.

슬슬 시스템 지도라도 하나 그려야 하나.

( '_')y-~

[20181003] Intro ver.1 completed

환절기가 왔습니다.
나이를 얼마나 먹든지 환절기에 하는 고생이라는 것은 나아지는 것이 없네요.
되레 점점 심해진다고 해야할까.
연신 재채기를 해대며 작업중입니다.
( o_o)y-~



게임 인트로 작업이 마무리 되었습니다.

처음에는...
"엔터 더 건전" 방식으로 일러스트 몇장과 연출, 텍스트를 동원해서 쉽고 편하게 가고 싶었지만, "공돌이에게 그런것은 무리다" 라는 것을 확실히 깨닫게 되었습니다.

그리하여 "루비이야기" 에서 엔딩을 만들던 방식을 급히 도입해서 도트 애니메이션으로 떡칠 후 마무리 하게 되었네요.


< Intro Scene 3-4 cut x 1 >

< Intro Scene 3-4 cut x 2 >

< Intro Scene 3-4 cut x 4 >

이 방식은 정말 정말 정말이지 정말로 피하고 싶었는데요.

컷 구상부터 도트작업 그리고 테스트 까지 정말 여러가지를 다양한 방식으로 갈아 넣어야만 봐줄만한 결과물이 나오기 때문입니다.

드로잉 실력이 조금 더 괜찮았다면 고생이 덜 했을지도 모르겠지만
부질없는 생각입니다. @_@

이 것이 제가 할 수 있는 최선일 따름이죠.


이 작업을 위해...
  1. synopsis 작업
  2. story board 작업
  3. script 작업
  4. dot 작업
  5. animation 구성을 위한 코드 노가다
  6. 끝나지 않을 것만 같았던 Test
...등이 동원되었습니다.
( 엔진이 제공하는 animation tool은 축복입니다. o_o )

< Intro Scene 3-5 cut x 1 >

< Intro Scene 3-5 cut x 2 >

< Intro Scene 3-5 cut x 4 >

그렇게 잘 갈아 넣어서 마무리 되었습니다.

덕분에 오른 손목의 상태가 제법 안 좋아졌습니다.
한 동안 도트 작업은 보류해야만 하겠네요.
( T_T)y-~



이 작업으로...
게임에 들어갈 "문장" 들을 만들어내는 것이 제법 어렵다는 것을 알게 되었습니다.

처음에 작성했던 인트로의 스크립트들은 하나의 이야기로서는 전혀 문제가 없었고 심지어 가장 괜찮았던 것 같습니다.

그런데 말입니다. ( -_-)y-~

화면의 애니메이션과 엮이니 글의 맛은 사라지고 미묘한 흐름의 단절이 생겨나더군요.
그래서 많이 갈아 엎었는데 결과물은 영 아니올시다 였습니다.

언젠가 손 볼 날이 오겠죠.
그 때까지 일단 접어둡니다.



다음 작업은 아마도...
  • 유저가 처음으로 만날 던전이거나
  • 공격 행동에 사용될 속성 데이터 작업
...이 될 것 같습니다.

도트 작업 없는 것으로 잘 골라야 겠네요.



이 작업일지는 여기까지 입니다.
다들 감기 없이 환절기 잘 넘기셨으면 좋겠네요.
( '_')y-~