2017년 9월 22일 금요일

[20170923] 삽질중

환경 타일을 고전 젤다 스타일에서 바꿔보려고 몇가지 시도를 해보고 있습니다.

수 시간 쯤 삽질을 하고 드는 생각은...
"아 이거 진짜 고행이 되겠다."
...입니다.

언제나 그렇지만...
학습
삽질
노가다
...는 게임 개발의 절친인가 봅니다.

최종 목표인 "Hyper Light Drifter" 에 가까운 스타일을 확립하기까지 길고 긴 삽질의 터널을 지나야겠습니다.

안되면 말구요. @_@


----------------------- 절취선 -----------------------


여담으로 2017년 연내에 3 - 4 개의 게임을 출시하는 것이 목표였는데 아직 한 개의 게임도 출시하지 못했습니다. 목표를 이루려는 척이라도 하기 위해서...

오늘부터 한달쯤 들여서 "Dicer" 를 위해 만들어 놓은 시스템을 가져다가 작은 게임을 하나 만들어서 올려볼까 고민중입니다.

하기로 결정하면...

추석 연휴 기간동안 간단히 프로토타이핑 해보고 안되면 버릴예정입니다.

오늘은 하루종일 삽질을 하겠네요. 여러 방면으로...
( '_')y-~

2017년 9월 19일 화요일

[20170920] cocos2d-x 3.15.1 CallFunc Problem

오랜만에 3시간 가량의 삽질을 시전했습니다.

진행중인 Player 의 Attack 관련 제어 코드를 작성하는 도중에 Player 가...


...이렇게 굳어버리는 경우가 "비정기적" 으로 발생했기 때문입니다.


코드 여기 저기에 log 출력 코드를 박아 넣었고.
이리 저리 생각해볼 수 있는 거의 모든 경우를 확인해본 결과 이 것이 저로 인한 것은 아님을 확인했습니다.

원인은 SpriteFrame을 교체하는 Action을 열심히 수행한 이후 마지막으로 CallFunc Action이 작동해야 하는데 CallFunc이 작동하지 않는 것이었습니다.

그래서 검색을 시작했습니다. google 은 만병통치약이니까요.
그리고 찾았습니다.

http://discuss.cocos2d-x.org/t/cocos2d-x-3-15-1-sequence-has-error/38747

관련된 fix 로그는...
https://github.com/cocos2d/cocos2d-x/pull/17906
...입니다.

2017.09.20 현 시점에 cocos2d-x.org 에서 내려받을수 있는 엔진 압축파일은 해당 fix 가 적용되어 있지 않습니다.
그.러.므.로...

https://github.com/cocos2d/cocos2d-x 에서 ...
1. CCActionInstant.h
2. CCActionInstant.cpp
3. CCActionInverval.h
4. CCActionInverval.cpp
...의 코드를 복사하여 엔진 코드에 붙여넣으세요.


현 시점의 fix 상태는...
...와 같습니다.



이후 다른 fix가 적용되서 이리 저리 얽히면 다른 파일도 같이 가져와야 할지도 모릅니다.
그건 그때 각자 알아서 잘 하면 될것 같습니다. ㅇ_ㅇ
뭐... 그 전에 새로운 다운로드가 올라오겠죠.

2017년 9월 16일 토요일

[20170917] Dot for Attack

전투 테스트를 위해 기본적인 공격 모션을 찍었습니다.
16 x 16 너무 좋습니다. +_+


< idle with weapon >

< idle with weapon x 500% >



< run with weapon >

< run with weapon x 500% >



< attack with weapon >

< attack with weapon x 500% >

9월 까지 프로토 타입을 완성하고 싶었는데...
택도 없네요.
( '_')y-~
10월 까지는 해내고 싶습니다.

2017년 9월 12일 화요일

[20170913] 개선한 FSM 코드 사용 소감

지인들과 진행중인 this->topia 프로젝트에 적용하기 위해 "루비이야기" 에서 사용하던 FSM Lib의 거의 전체 코드를 뜯어고쳐서 옮겨 넣은 적이 있습니다.

현재는 다이서 프로젝트에도 옮겨와 있는 Lib 입니다.

나름 공들여 뜯어 고쳤음에도 제대로된 작업에는 사용한 적이 없었는데
이번에 진행중인 컨텐츠 작업이 있어서 사용해 보았습니다.

모든 면에서 "루비이야기" 에서 사용한 FSM Lib 보다 편리합니다.

스크립트 지원 없이 C++ 코드 만으로 작업을 하는 터라 가급적 최대한 손이 덜 가도록 만드는게 중요했는데 이런 저런 여러가지 불편한점이 사라져서...

...대 만 족 이네요.

형식 코드( ? ) 가 가지는 이런 저런 무의미한 코드 타이핑은 여전히 피해 갈수는 없지만 "이게 어딘가..." 라는 감상입니다.

스스로 작성한 코드에 만족하는 경우가 잘 없는데.
이건 만족스럽네요.

인디질을 계속 할 수 있다면 이걸 더 키워서 다음 프로젝트 쯤에는 툴도 하나 만들어 보고 싶습니다.
( '_')y-~


> 앞의 몸이 안좋은 건에 대한 글이라거나.
> 이 글과 같은 종류의 글은 가급적 작성하지 않았었는데 기록의 의미에서 남겨보기로 했습니다.

2017년 9월 10일 일요일

[20170911] Warning.... ( '_')y-~

몸 상태가 많이 안좋습니다.

새벽 3시에 일어나서 간단하게 Typing 효과를 만들고 났더니...
"아 도저히 안되겠다."
...는 생각이 드는군요.
( '_')y-~

일단 2 - 3일 쉬어볼까 합니다.

지난주 작업량이 엉망인데다가 집중력도 유지가 안되서 뭔가 했더니.
몸에 한계가 왔네요.


얼른 회복하고 다시 시작하겠습니다.

2017년 9월 8일 금요일

[20170909] Genome Builder

캐릭터 구성을 위한 기본 뼈대가 완성되었습니다.
고작 경우의 수를 잘 구성하면 되는 것인데도 쓸데없이 시간이 많이 들어가는 군요.
몇개의 시험안을 만들고, 부수고, 조정하는 작업을 거쳤습니다.

현재는 대충 아래의 모양을 하고 있습니다.

< Genome Builder U.I >

경우의 수를 모두 표현하면 10px 씩 차이를 두어도 금방 화면을 가득 채워버려서 약간의 제약과 배제를 통해 의미있는 결과물을 추려냈습니다. ( 그럴싸하게 설명했습니다만 사실 별거 없습니다. @_@ )

U.I를 위해 해상도도 커졌고 더불어 컨셉안도 조정되었습니다.

< 컨셉 디자인 >

실질적인 월드 구성을 위해서 이 작업은 여기서 잠시 멈춥니다.
일단 돌아가니까요. ㅇ_ㅇ

해상도는 더 올라갈 수 있습니다.
게임 자체의 해상도는 낮아도 문제가 없습니다만, U.I의 해상도가 낮은건 제약이 많이 따르는 것 같아서 여러가지 가능성을 고민중에 있습니다.
적당히 고민하다가 때가되면 골라봐야겠습니다.

한 시름 덜었으니 내일은 산책을 가야겠습니다.
햇볕이 그립네요. ( '_')y-~

2017년 9월 2일 토요일

[20170902] 근황

생존신고겸 작업 근황을 남겨 봅니다.

코딩과 기획과 디자인을 열심히 병행하고 있습니다.
열심히는 하고 있습니다만 진도는 잘 나가지 않는 상황입니다.
아무래도 몸 상태가 예전만 못하다 보니 "루비이야기" 때처럼 초반에 미친듯한 작업량을 소화할 수는 없나 봅니다.

기획이 불완전하니 코딩이 꼬이고
코딩이 꼬이니 다시 기획을 손보러 가고
그런 일상입니다.

그래도 기분전환 삼아 그리는 컨셉 디자인 나부랭이 같은 것이 나름의 즐거움이어서 그럭 저럭 버티는 중입니다.
조만간 번아웃이 오지 않겠나.... 싶습니다만 어찌되지 않겠습니까? @_@

지금은 아래에 보이는 UI 를 만들고 있습니다.

< 현재 게임 화면 >

"아직 아무것도 없는데 무슨 UI냐" ...는 생각을 할 수도 있습니다만
게임의 핵심 시스템이라서 시스템 구현과 병행하여 대강의 모양이라도 잡아둘까 합니다.
이 녀석이 잘 되면 아래의 컨셉 디자인과 같은 모습이 될 껍니다.

< 컨셉 디자인 >

컨셉 스케치를 공개된 공간에 올리는것은 제법 불안함을 유발하는 행동입니다만...
"누가 나따위의 디자인을 따라하겠어?" ...라고 생각하며 그냥 올립니다.
누가 저따위의 디자인을 따라하겠습니까. 허허허허

적어도 1주일에 한개씩은 글을 작성하도록 노력해보겠습니다.
환절기가 시작되었군요. 감기 조심하세요.
( '_')y-~

2017년 8월 20일 일요일

[20170820] 간만의 Dot

한동안 글을 작성하지 못했습니다.
글이 작성되지 않는 다는 것은 눈에는 하나도 안보이는데...
작업량은 어마 무시한 무언가를 하고 있는 겁니다.
( '_')y-~

대강의 정리를 끝내고,
미뤄둔 dot 작업을 해야만 하는 상황이 되어 하고 있습니다. ㅇ_ㅇ

크기는 작고
머리는 크고
귀욤귀욤하게.

< Idle >

< Move >

컨텐츠를 손으로 찍고 싶지 않아서 자동화 하려고 했는데...
손으로 찍으나 자동화 하나 1인 개발이라는 한계 앞에서는 별 차이 없는 것 같습니다.

미리 깨달았어도 좋았을 것을... 오늘도 하나 배워갑니다.

2017년 8월 10일 목요일

[20170811] 고민

이쯤오면 슬슬 고민을 하게 됩니다.
적어도 혼자서 작업하는한 피해갈수 없는 고민이죠.

"이정도 품질로 마지막까지 완성할 수 있을까?"

"루비이야기" 를 만들때도 일관성과 작업 효율을 위해 많은 것을 내려놨었는데.
역시나 이 문제는 다시 마주하게 됩니다.


답은 정해져 있습니다.
"덜어내자"
( '_')y-~

어디를 어떻게 덜어내야 할 것인가...

[20170810] 구상3 ( Player )

아래의 순서와 같은 의식의 흐름에 기반한 구상 끝에.
캐릭터의 스타일이 대충 정해졌습니다.
( '_')y-~

조정의 여지가 몇가지 있습니다만.
큰 변화는 없을것 같네요.


2017년 8월 9일 수요일

[20170809] 구상2 ( Main Room )

구상중.
...사람살려.
( '_')y-~

< main room >

< 이젠 저해상도로 그림이 되는구나. ㅇ_ㅇ >

2017년 8월 8일 화요일

[20170808] 색상 선택은 너무 어렵다.

정말 다른건 모르겠는데 색상 선택은 누군가 대신 해줬으면 좋겠습니다.
( '_')y-~

이건 정말 숙련도의 한계를 느낍니다.
쓸만한 감각을 가지는데 10년은 걸릴 것 같네요.

< 256 x 208 >

< 1024 x 832 >

2017년 8월 6일 일요일

[20170807] TileSet003 - from "The Fable of Ruby"

"루비이야기" 에서 사용하던 타일을 16 x 16 기준으로 조정해서 옮겨왔습니다.
가급적 많이 옮겨다 쓸 예정입니다.

해상도를 낮추니... 정말 무시무시하게 dot 찍기가 편하군요.
( '_')y-~




[20170807] 구상 ( Main Room )

구상중...

"많이 허전하지만 하나씩 채워나가면 되겠지."
...라고 생각하고 있습니다.
( '_')y-~


그림 비슷한 것을 참 오랜만에 그립니다.

생각해보니 "루비이야기" 를 만들때는 오프닝 타이틀을 제외하면
이런 종류의 구상을 한적이 없군요.

그시절에는 1일 1그림을 다짐했던적도 있었는데도 말이죠.

종종 그려 볼까합니다.

2017년 8월 4일 금요일

[20170805] modify view of cocos2d-x 3.x display stats

cocos2d-x 로 게임을 만드는 경우 많은 사람들이...
director->setDisplayStats( true ) // turn on display FPS
...기능을 활용합니다.

보통은 아래와 같이 출력됩니다.
하단에 적절한 크기로 출력되죠.

그러나 저해상도 게임을 만들다 보면 Display Stats 가 불편할 정도로 크게 나오게 됩니다.
Display Stat의 크기는 일정한데 해상도가 작아지니 당연한 일입니다.


256 x 160 의 해상도로 만드는 게임의 화면을 봅시다.
이 화면을 보면서 개발하면 아마 눈이 빠지겠다 싶을겁니다.

그래서 Window Frame Size 를 Design Resolution 의 배수로 설정해서 큰 화면에서 쾌적한 개발을 진행하는 꼼수를 사용하게 됩니다.
제가 개발하는 게임에서는 5배가 적용되어 1280 x 800 으로 Window Frame Size 가 설정됩니다.
그리고...
그대로 커집니다. o_o

불편하죠. 매우 불편합니다. 게다가 안티가 먹어서 흉하기 까지 합니다.
그러므로 약간 손을 보기로 했습니다.
엔진 코드에는 가급적 손을 대지 않는것이 저의 원칙이지만 이 경우에는 잠시 원칙은 접어두기로 했습니다.

CCDirector.cpp 파일을 엽니다. 그리고...
void createStatsLabel();
...함수를 찾아갑니다.
중간에 보면 아래와 같은 코드가 있습니다.

float scaleFactor = 1 / CC_CONTENT_SCALE_FACTOR();

이 코드를 아래와 같이 바꿔줍니다.

float customScaleRate = ( _openGLView->getDesignResolutionSize().height / _openGLView->getFrameSize().height );

float scaleFactor = ( 1 / CC_CONTENT_SCALE_FACTOR() ) * customScaleRate;


그리고 또 아래에 보면 다음과 같은 코드가 있습니다.

const int height_spacing = 22 / CC_CONTENT_SCALE_FACTOR();

이 코드도 바꿔줍니다.

const int height_spacing = ( 22 / CC_CONTENT_SCALE_FACTOR() ) * customScaleRate;

Design Resolution 기준으로 나오는 Display Stats 를 Window Frame Size 에 맞추어 나올수 있도록 Scale 을 적용해주는 코드입니다.

그리하여 평화가 찾아옵니다.

2017년 7월 31일 월요일

[20170801] roguelike map generate

어찌 어찌 해서 일단 마무리 되었습니다.
적용해보면 어디서 터지지 않을까 싶습니다만.
그건 그때 적당히 손보면 될것 같습니다.
( '_')y-~

작업 과정에서 여러 자료들을 참고 하였는데 그중에...
이 곳의 자료가 가장 많은 도움이 되었습니다.

국내에도 번역서가 출간된 
저자가 운영하는 블로그 입니다.

< roguelike dungeon map rawdata >

이제 게임 안에서 보여줄 시스템을 구성해야겠습니다.

[20170731] Still Working...

적당히 끝낼 수 있으려니~~~ 하고 생각했었는데.
맵의 연속성을 보장하려고 하니 그럴싸한 수준에서 끝낼수가 없군요.
( '_')y-~

다시 갈아 엎으러 갑니다.

< generate room and road >

< connect room to road >

< remove tile of stand alone >

2017년 7월 25일 화요일

[20170726] Working...

어떤 방생성 Algorithm
( '_')a

< Ver.1 : rooms >


어떤 길생성 Algorithm
( '_')y-~

< Ver.2 : simple flood fill : road only >


< Ver3 : room + flood fill >


완성판은 내일.

2017년 7월 24일 월요일

[20170725] Sprite Animation System, Caching

이런 저런 작업들을 많~~이 하고 있습니다.

1. Sprite Animation System 을 손봤고
2. Effect 재생을 위한 간단한 테이블과 구조를 설계했습니다.
3. Caching 을 위한 코드를 작성하고
4. 1 - 3번 작업과 관련한 적절한 Refactoring 을 마무리 했습니다.

눈에 보여지는 작업이 있는데도 글을 작성할 생각을 못한걸 보면 정신이 없기는 없었나 봅니다.
할거는 많고 시간이 많이 모자랍니다.

"루비이야기" 작업때의 경험을 교훈삼아 미리 미리 Caching 을 위한 기반작업을 진행했습니다. 나름 결과물이 괜찮아서 만족하고 있습니다.

아래에 나오는 캐릭터는 머리, 몸, 양팔, 양다리 6개의 노드로 나누어져 구동되고 있습니다.
위치가 움직이는 것은 Player Actor, 나머지는 Effect Node 입니다.
Skeletal Animation 을 사용하지 않고 적절한 품질과 효율로 결과물을 뽑아낼 수 있는지 테스트 하는 과정입니다.
1. 저해상도에서 분할된 Sprite Animation 만으로 만들지
2. 해상도를 올리고 Skeletal Animation 을 적용할지
...고민중입니다.

뭐가되건 작업량은 만만치 않을 것 같네요.
( '_')y-~



약간의 짬이 생기면 지인들과 하는 팀프로젝트에 코드를 옮겨 넣기도 하고 있습니다.
코드를 옮기는 과정은 많은 고민을 하게 해줍니다.

개인 작업에서는 회사다닐적 만큼 코드의 품질에 신경을 쓰지 않습니다.
어차피 혼자 볼 코드이고... 못견디 겠으면 그 시점에 Refactoring 하면 그만이기 때문이죠.

팀작업은 회사다닐적 만큼 코드의 품질에 신경을 쓰는 계기가 되기에 제법 신선한 자극이 됩니다.

비가 많이 옵니다.
다들 수해 없이 장마를 지나길 바랍니다.

2017년 7월 8일 토요일

[20170709] Researching - Pixel Art

여전히 삽질중.
( '_')y-~



16 x 16 타일 기준에서 찍는 Dot 가
32 x 32 타일 기준에서 보다 편할 것은
안해봤어도 알정도였지만.
정말 많이 편합니다.

디테일을 깍느라 했던 고생이 많이 덜하네요.
물론 해상도가 낮은 만큼 보여주려는 것에 대한
추상화 수준이 높아져서.
고수준 Dot 를 찍는 것은 더 어려워지겠지만...

Animation 작업에서 얻는 편리성으로
모든 것을 감당할 수 있을 것 같습니다. @_@



2017년 7월 5일 수요일

[20170706] dev with DragonBones 5.x

Skeletal Animation 을 위해 "Dragon Bones" 라는 라이브러리를 적용했습니다.


중국에서 만들어진 라이브러리로 ...
1. 툴
2. Runtime Lib ( cocos2d-x, Unity )
3. Flash Plugin
...을 제공합니다.

가장 중요한 장점은 무료라는 것입니다. ㅇ_ㅇ

< Dragon Bones 의 Tool >

cocos2d-x 프로젝트에 Runtime Lib 를 올리기 위해 간단히 데모 작업을 해봤습니다.
약간의 삽질이 수반되긴 했습니다만 일단 잘 작동합니다.
( '_')y-~

< Test용 Demo >

"Dot 질에 이어서 Animation 작업까지 하게 되는 것인가."
...라고 한탄해 봅니다만.
피해갈 길은 없어 보이네요.

2017년 7월 2일 일요일

[20170703] dev with Aseprite

이번 프로젝트 에서는 Aseprite 로 dot 작업을 합니다.

Paint.net 으로도 넉넉하게 작업했습니다만
key frame 기능과 onion skin 기능이 매력적이어서.
사용해보기로 했습니다.

( '_')y-~

< steam 판 Aseprite >

2017년 6월 29일 목요일

[20170630] 오랜만의 Tile 작업

Dot 작업을 몇개월만에 하는지도 모를정도로,
참으로 오랜만에 간단하게 Tile을 찍어봤습니다.

몸에 익혀둔 것이 어디 가지는 않았네요.
( ^_^)y-~


요 몇일 쉬엄쉬엄 보내고.
7월부터 다시 달려 갑니다.

2017년 6월 27일 화요일

[20170628] 기반작업 완료

게임의 기반을 잡기 위한 작업을 빡시게 진행하고

오랜만에 글을 작성해 봅니다.
지인 2명과 진행하는 project W 에서 작성한 코드중에 제가 작성한 코드를 정리해서 옮겨오고 Physics Space Scale 을 적용해서
기반 작업을 대충 완료했습니다.
대강의 작업 목록은...
1. Company Logo Scene
2. Stage
3. Zone
4. Player
5. Gate
6. Physics( Box2D )
7. FSM 
...입니다.


< 2009년산 구닥다리 PC 에서 영상을 찍었더니
프레임이 끊기는군요. @_@
얼른 돈벌어서 새 PC를 마련하고 싶습니다. >

이제 기본 Animation 시스템을 붙이고
2D Skeletal Animation 을 적용할 것인지 말것인지 정한 이후에
관련 작업을 진행하면 될 것 같습니다.

한동안 무리를 좀 했더니 어지럽군요.
이 글의 작성시간은 날밤을 새운 오전 6시 31분 입니다.
( '_')y-~


2017년 6월 20일 화요일

[20170621] Point Light

이게 뭐라고 작업하는데 이리 오래 걸렸는지 모르겠습니다.
Shadow Layer 를 추가하고
Light Node에 해당하는 위치의 색상을 밝게 바꿨습니다.

1개의 Light 가 존재하는 경우에는 Shadow Layer를 렌더링 하는 과정에서 간단하게 처리가 가능하지만...

N개의 Light 가 있는 경우는 간단히 처리가 안되더군요.
( '_')y-~


fsh 의 세부적인 로직을 손 봐야합니다만...
일단 멈춰두겠습니다.

라이트에 색상을 입히려면 어차피 추가적인 작업이 필요하니까요.

2017년 6월 17일 토요일

[20170618] Circle Gauge Complete with cocos2d-x 3.15.1

지난 작업에 이어서
1. Texture 를 설정하고
2. VBO 의 uv 를 조정하였습니다.
3. Shader를 조정하였습니다.
 결과물 입니다.


유니티엔진으로 작업 할때도 이걸 만들었었는데
연습 삼아 만들기 괜찮은 것 같네요.
( '_')y-~

이후에 새 엔진 만질 일 있으면
이거 한번씩 만들어볼까 합니다.

2017년 6월 15일 목요일

[20170616] Circle Gauge Test with cocos2d-x 3.15.1

render 관련 코드를 직접 작성 하는김에 테스트 삼아서
Circle Gauge를 위한 코드를 작성해 보았습니다.


이제 Texture 를 적용해봐야겠네요.
( '_')y-~

< 움잘 제작 -> https://ezgif.com/video-to-gif >