개발 노트 게임 중... 2018/05/23 16:05 by cagetu

* Doom For Switch (완결)
: 정말 재미있게 플레이했다. 자유롭게 돌아다니는 느낌도 있고 라이팅을 이용한 가이드 라인이 좋았다. 슈팅 액션은 뭐 말할 것도 없고!!! 기회가 된다면, "솔트 앤 생츄어리"가 "다크 소울"을 바탕으로 만들어 진 것 처럼, "둠"을 기반으로 한 횡스크롤 혹은 쿼터뷰 게임을 만들어보고 싶은 욕심이 생겼다. 

* 몬스터 헌터 월드
* 갓 오브 워 4

열심히 플레이 중이다. 역시 게임은 경험인가보다. 실제로 플레이해보면서 재미를 찾아가는 것, 어떤 재미를 주려고 했는지를 느끼니 매우 즐겁다. 프로그래밍 공부를 해야 하지만 당분간 게임을 좀 더 해보면서 그 매력에 빠져서 어떻게 하면 재밌고 멋지게 만드는지에 대해서 생각해보는 시간을 가져볼란다~

이런 대작들이 마구 나오는 상황이라니~ 풍년이로구나~ 



하루 하루 아~ 정신없다~~~ 2018/05/09 17:39 by cagetu

회사원으로서 / 게임개발자로서 / 가장으로서 / 게이머로서 여러가지로 혼란스러운 시기.... 내 선택이 옳았을까? 겉모습에 현혹된 것은 아닐까? 나이를 들어도 어떻게 될지 모르는 건 여전하고, 실수하기 마련이다. 때로는 후회할지도 모르지만, 과거도 아니고, 미래도 아니고, 딱 현재만 살자.... 현재만.... 



개발 노트 Good Game Design is like a Magic Trick 2018/04/18 18:27 by cagetu

Good Game Design is like a Magic Trick (아직 시청 중... 영어는 어렵다.. ㅡㅡ;;) 를 보면서, 내용이 엄청 흥미로운데 모르는 것들이 많아서 구글링하다 보니 다음 질문에서 이 주제가 시작되었더라.

Video game developers confess their hidden tricks at last라는 아티클에 약간 정리가 되어있는 것처럼, 다양한 게임에서 게임을 좀 더 재미있게 하기 위한 장치들을 공유하고 있다. (일단, 이런 문화 부럽고요!!!) Rubber-Banding, Coyote Time 등의 장치들과 적이 일부러 미스샷을 날려주기도 하는 등의 재미있는 트릭들이 있다.

Coyote Time 참고

이런 내용들 너무 재밌고 관심이 무척 많은데, 나에게 너무 어렵다... 게임 디자인은 매력적이지만 아직 나에게는 어려운 주제인 듯.. ㅡㅡ;;;




개발 노트 작업 중(or 작업 한) Container 들 2018/04/09 18:26 by cagetu

작성해보면서 UnrealEngine4, Oryol, Nebula3, OurMachinery, bitsquid Foundation, FacebookLib, eastl 등을 많이 참고하고 있다...

* Array
: Custom Array에서 적은 내용이지만, UE4의 TArray 80: Oryold의 Array 20 정도의 내용을 참고해서 작성했다. 특히, UE4의 AddUninitialized 등이 마음이 들었다. Allocator 관련해서는 간단하게 Allocator 객체를 이용했다. 기본적으로 Array에서는 그냥 HeapAllocator가 사용된다. 추후에 PoolAllocator 정도를 매핑할 수 있으려나?? (UE4 보면 다른 Allocator를 사용하는 경우는 별로 없는 듯...)

* InlineArray
* FixedArray (StaticArray)
: UE4에서는 TArray<int32, TInlineAllocator<16>> 이런 형태로 사용하는데, 내부적으로 int32 InlineData[16] 배열로 잡고 시작해서 heap 없이 기본 배열 메모리를 사용하다가 너 많은 할당을 원하면, HeapAllocator를 이용해서 확장해주도록 한다. FixedArray는 TArry<int32, TFixedAllocator<16>> 으로 사용되는데, int32 ElementData[16] 으로 설정되고 더 이상 확장되지 않도록 된다. oryol에서 InlineArray가 ue4의 FixedArray와 동일하게 고정 크기만 지원한다. Allocator를 여러 개로 할 것인가? Array를 메모리 할당 형태에 맞게 구분해서 만들어줄 것인가? 를 결정해야 한다.

나는 InlineAllocator를 작성해서 사용하는 것이 조금 더 세련되어 보이지만 복잡도가 조금 더 올라가는 것 같기도 하다. UE4에서도 TSet과 TArray에서만 사용하는 것으로 봐서 oryol처럼 InlineArray를 만들고, 고정 크기 대신 HeapAllocator로 확장할 수 있도록 작성하는 것이 조금 더 직관적이지 않나 생각해본다. 

> Map / Set을 Array 기반으로 작성하다보니, InlineAllocator를 연동할 수 있으면 Map / Set에도 활용할 수 있을 것 같아서, InlineArray -> InlineAllocator 작성해보고 있다. Allocator를 어떻게 다루느냐? 도 큰 공부가 되고 있다.

* BitArray

* Map
이번에는 Map이닷!!!, LowerBound / UpperBound에 대한 소개 글처럼 LowerBound + Array를 기본적으로 사용한다. 이건 oryol / nebula3 등의 map 구현 형태를 보고 작성해본 것이다. eastl::map이 stl::map 과 동일하게 R-B Tree로 구현되어 있지만, insert할 때 "생성 -> 시도 -> 삭제"가 아니라, "검색 -> 성공 -> 생성" 형태로 되어 있는 것이라 나쁘지 않을 것 같다. 아마 eastl::map과 custom map을 혼용해서 사용하면 되지 않을까???

* Set
: Set은 정렬된 형태로 검색이 가능하도록 한다. UE4에서는 TSetAllocator가 별도로 존재한다. 내부까지 명확히 보지는 않았지만, 문서를 보면 FreeList 처럼 관리하여 재활용 할 수 있도록 되어 있다고 한다. 이 정도까지는 아니고 기본적으로 Map과 같이 LowerBound + Array를 이용하여 작성하였다. 별도 Allocator를 생각하지는 않았다.

* Template::Move
* Template::Forward
: && 계열에 대한 공부가 많이 부족해서, 겸사 겸사 Template 도 그냥 같이 보고 있다.

* Algorithm::BinearySearch
* Algorithm::UpperBound
* Algorithm::LowerBound
http://ohyecloudy.com/pnotes/archives/330/ 소개한 내용처럼 순서가 보장되면서 검색을 하기 위한 알고리즘이다. Map을 작성할 때, stl 처럼 tree 구조를 사용하지 않고, Array + LowerBound로 구현할 때 사용했다. 알고리즘은 간단하지만 만들어본다는 것에 의의를 둔다.

* Allocator::MallocAllocator
* Allocator::LinearAllocator
* Allocator::StackAllocator
* Allocator::ScopeStackAllocator
 

WHAT’S A BARRIER? 2018/04/09 18:19 by cagetu

Vulkan을 공부를 하면서 많은 것들이 생소했지만, 그 중에 가장 생소하고 이해하기 어려웠던 것 중에 하나가 바로 Barrier다.


이 글을 보면 Barrier가 무엇인지 자세하게 설명이 되어 있다.

1) Synchronization point
- 쓰레드가 동작하는 코드의 특정지점에 도달했을 때 모두 멈춰야 하는 지점을 명시
- 다수의 쓰레드가 실행 중인 태스크를 모두 완료했을 때를 우리가 알기를 원할 때 도움이 된다.

2) Memory Barrier
- 메모리 베리어는 barrier 전/후 강제로 메모리 수행을 완료하도록 함으로써 도움을 줄 수 있다.

Compute Shader나 CUDA를 사용해본 적이 없어서, 더 자세한 내용은 솔직히 정확하게 이해는 되지 않는다. 하지만, 예전에 여치님이 발표했던 풍월로 약간은 유추해서 생각해볼 수 있기는 하다. 연구 필요!!!

1 2 3 4 5 6 7 8 9 10 다음



메모장

내가 먼 훗날에 이 글들을 보았을 때, 좋은 추억이 될 수 있기를...

나를 위해... 나에게 쓰는...

msn: cagetu@hotmail.com
mail: cagetu79@gmail.com
twitter: twitter.com/cagetu
facebook: facebook.com/cagetu