디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[일반] 알아두면 좋은 기술이나 지식, 라이브러리들

꿀복한행벌갤로그로 이동합니다. 2021.03.23 23:43:46
조회 7207 추천 103 댓글 98
							


유용한 라이브러리 뿐만 아니라 직접 할줄 알아야하는 지식도 포함하고 있음미다.

기억이 안나서 못적는것도 있어요.


그냥 의견일 뿐이고 중요한데 안적은것도 많고, 

쓸데없이 적은것도 많으니 그냥 재미로 참고만 하씹씨오!


그래도 정말 유니티 게임개발을 직업삼아 하실분들에겐 도움이 될 것 같아서 쓰러 왔어요..

음.. 생각나는거 그냥 이것저것 다 적고 갈게여.


마춤뻡은 컨셉입니다..


아.. 그리고 원래 적을게 많고, 각각 디테일하게 적고싶은데 디씨 텍스트에디터 문제인지 제 키보드 문제인지 크롬문제인지

특히 영어를 쓰면 자꾸 글이 최상단으로 올라가면서 글이 날아가요.. 그래서 다음에 전부다 제대로 적어서 다시한번더 올릴게요


그리고 제가 오른팔이 신경통때매 많이 안조은 상태라 글상태 신경을 많이 못쓰니 이상한 오타있어도 그냥 이해 해주세염 ㅠ(하지만 마춤뻡은 컨셉임니다.)


Odin Insepctor



이건 뭐 누구나 다 아는걸텐데 말이 필요할까요! GUI 만들때도 굉장히 편하고 강력한 Serialize+GUI를 제공하기 때문에

사실 유니티를 사용한다면 누구나 가장 먼저 임포트하는 라이브러리 입니다.


비싸지만 잘 활용하면 생산성이 눈에띄게 올라가니 추천드려요.








Behaviour Tree (AI)





Behaviour Tree를 직접 작성하지 못하더라도 Asset의 힘을 빌리면 되기때문에
사용하는 방법과 구조적인 원리를 알면 게임 AI를 만드는데 도움이 됩니다.

Behaviour Tree는 GUI로 제공되는 편리한 유료 에셋들이 있습니다. 나중에 게임에 복잡한 AI를 넣어야 하는경우 한번 활용해 보세요.


* 복잡하지않은 간단한 AI는 FSM으로도 충분하지만, 조금 더 디테일한 AI로직 관리가 필요하신 분들은 공부해보세요.

https://assetstore.unity.com/publishers/2308 BT트리를 유료에셋으로 쓰시려는 경우 해당 에셋을 추천합니다.
구매하시기전에 BT 트리가 무엇인지 
정확히 이해하시고 사는게 좋습니다.
생각보다 처음 이해하려면 복잡하긴 합니다.







코드 생성 자동화 (Code Generator)

https://youtu.be/-BfqFaQF53s


반복적인 코드를 짜야하는 경우나 서버와 Enum동기를 맞추는경우 코드 제네레이터를 만들줄 알면 코드 관리하기가 굉장히 편리합니다.

코드제네레이터는 위 동영상처럼 자동으로 형식이 있는 코드를 짜주는 도구를 말합니다. 위 영상은 제가 직접 만들어본 예시입니다.


Obfuscator





https://github.com/shlifedev/AmongUsMemory/blob/master/OffsetGuide.md <-어몽어스의 경우 제가 이렇게 해킹했읍니다.

il2cpp빌드를 해도 치트엔진에 모노디섹터 라는게 있어 쉽게 해킹이 가능했습니다.

난독화 툴을 이용하면 위 해킹을 어느정도 방어할 수 있습니다.   


위 링크는 제가 어몽어스를 해킹했을때인데, Obfuscator를 적용하지 않으면 저런식으로 게임 내부의 클래스명이나

게임 스트럭쳐를 쉽게 확인할 수 있습니다.


난독화를 적용하면 int health = 2000;

이라는 변수가 아래처럼 변합니다. 

int CXZJCXZJC = 0x7d0 // 0x7d0은 16진수로 2000입니다.

 

이런식으로 쉽게 알아볼 수 없는 코드로 바뀌어 컴파일 되기때문에 해커가 코드분석하기가 까다로워 집니다.  

그래도 이런 기본적인 해킹은 방지할 수 있으면 좋겠죠?


직접 구현 할 필요는 없습니다. 게임 개발은 속도가 생명이니까요.
AssetStore에 난독화 관련 도구가 있으니 찾아보세요~~!


  


Newtonsoft.Json


Json이 필요하실때 Newtonsoft.Json 에셋스토어에 있는거 쓰시면 됩니다. 
유니티에도 내장되어 있는게 있는 것 같은데 가끔 파싱 못하는 이유를 모르겠어서 그냥 맘편하게 얘 씁니다.


Peek (에셋)



https://assetstore.unity.com/packages/tools/utilities/peek-editor-toolkit-149410 

생산성 및 편의성 에셋입니다. 개인적으로 좀 익숙해지니까 생산성이 많이 오르더라구요.
개발자보다는 오브젝트 배치하는 디자이너에게 좀 더 유용할 수 있는 에셋입니다.



Assembly Definition


AssemblyChsarp.dll 에 여러분들이 작성한 코드가 모두 포함되는거 아시죠?

즉, 여러분들이 코드를 작성한게 많이 쌓이면 Assembly.Chsarp.dll의 용량이 커지면서 컴파일 시간이 길어집니다.

빠르게 디버깅이 필요한 경우도 많기때문에 컴파일시간이 느려지면 개발 속도가 늦춰지겠죠.


Assembly Definition을 사용하는 이유는 이것 때문입니다.

보통 라이브러리와 같은 게임과 전혀 상관없는 로직들은
Assembly.Csharp(유니티 프로젝트)를 참조 할 이유가 없습니다. 


그렇기때문에 Assembly Definition으로 dll을 분리하면 컴파일시간을 줄일 수 있습니다.

컴파일되는 dll을 여러개로 분산시켜 게임 코드와, 라이브러리 코드를 분리해버린다고 생각하시면 됩니다.




Asset Bundle Custom Protecting


에셋번들 직접 암호화 하는 방법을 알면 좋습니다. 뭐 어떤 게임에서나 사용하고 있는 방법이라 크게 어려운건 없습니다. 보통 파일의

특정 Byte를 암호화하여 내 게임의 데이터 파일을 뜯어보는 변조행위를 방지합니다.


설명하고자 하는건 직접 하는 커스텀 암호화 방식입니다. 정보글이 별로 없어서 제가 정리했었던 글이 있는데  

여기 에 있습니다


파이어베이스


파이어베이스 배워두면 좋은게 여러가지 있습니다


1. 푸시메세지 짱 쉽게 구현가능

2. 게임 이벤트 로그 짱 쉽게 남길수있음.

- 예를들면 플레이어가 강화를 보통 몇회차에 실패하는지,

- 첫 시작시 레벨 몇까지 키우다가 게임을 종료하는지

- 플레이어가 평균 몇회 캐시상점에 진입하는지 등..


등등.. 다 구글 서버에 남고 통계로 관리가능



3. 로그인/회원가입 쉽게 구현 가능 


정확히 말하자면 소셜 로그인 UI 구현이 쉽다는게 아닙니다.

소셜 로그인을 해서 얻은 유저 고유id 정보를 저장할 수 있는 데이터베이스를 여러분들이 따로 구현해서 관리 안해도 된다는 소리입니다.

저는 로그인해서 정보저장이 필요하면 필수로 파이어베이스 인증을 사용합니다.


그 외 기타등등 여러가지 많이 이점이 있으니 한번 찾아보세요~~



Web/Http


Api 서비스를 이용하는등 여러가지 이유로 HTTP 통신을 이해하시면 좋습니다.

HTTP통신은 웹 개발할때만 쓰는게 절대 아닙니다.

HTTP통신은 무슨 개발을 하시든 그냥 필수로 알고 있어야 한다고 생각하세요~~!




DnSpy or DotPeek


저는 다른게임 소스코드 까보는 경우가 생각보다 많았습니다.

그냥 처음 만드는 장르면 얘내는 코드를 어떤식으로 짜놨을까 궁금해서 보고 구조를 참고하려는 경우가 많았구요..

사용하고있는 라이브러리가 소스코드 제공이 안되어서 커스텀해서 쓸때도 이걸 썻구요..

또는 막히는게 있으면 얘내들은 이거 대체 어떻게 해결한거지? 하고 찾아볼때도 있고요..


그래서 저 두 툴을 이용해서 소스코드를 볼 수 있었습니다. (경우에 따라 수정도 가능함) 


대신 il2cpp 혹은 난독화 처리 되어있으면 못보긴 합니다..

il2cpp의경우는 그래도 c# 잔해가 남아있어 Struct정도는 파악 가능합니다.


제가 카드겜 만드는데 얘내는 구조 어떻게 짜놨을까 하고 하스스톤이나 레전드오브 룬테라 초창기 나왔을때 il2cpp 빌드가 안되어있어서 dll 까봤던 기억이 있네요

유니티로 만든 게임 해킹이나 C#으로 만든 프로그램 까볼때 쓰기도 하고..

일단 얘내도 쓸 줄 알면 좋긴 합니다만 필수는 아닙니다.


OAuth 에 대한 이해


소셜로그인을 구현하실때 필요한 지식입니다.

꼭 게임개발이 아니어도 개발자라면 OAuth에 대한 이해가 있는게 좋습니다. 

특히 유니티는 구글서비스를 이용하는 경우가 많으실텐데 OAuth를 이해하지 않으면 

 이용할때 혼란이 좀 많이 생기실 수 있습니다. 



IMGUI


UIElement가 나왔지만 꾸준히 유니티에서 사용하는 GUI 코드죠. OnGUI() 함수 내부에 구현하는 그것 맞습니다.

배워두면 라이브러리나 에디터 만들때 유용합니다. 사실 유니티 개발자라면 간단하게 배워놓는게 맞는 것 같습니다.



XOR 암호화

 

이걸 구현해두면 치트엔진으로 서치로 값 오프셋 정도밖에 못찾는 허접한 치터툴키디들은 대부분 방지할 수 있습니다.

잘 커스텀하면, 외부에서 강제로 값을 수정하면 XOR연산이 실패할때의 Callback을 만들어

해당 사용자를 서버에 로그로 남길수도 있습니다





젠킨스 or 유니티 클라우드 빌드 (빌드 자동화)


개인적으로 저는 인디게임 개발자라면 유니티 클라우드빌드 돈질러서 쓰는거 추천합니다.

저는 유니티 클라우드 빌드를 슬렉과 연동해서 플레이스토어 앱 배포까지 전부 자동화 했었는데 굉장히 편했습니다.

또 제가 ios 디바이스가 없는데 유니티 클라우드 빌드는 ios앱까지 빌드해주는걸로 알고 있습니다.


다만 프로젝트가 무거워서 빌드속도가 중요하신 분은 빌드컴퓨터로 젠킨스 쓰는게 좋을 것 같아요.

근데 빌드컴퓨터 살돈에 차라리 클라우드 빌드가 더 나은것 같아서 저는 클라우드 빌드 추천. 





비동기와 비동기 콜백에 대한 이해


비동기 프로그래밍은 어떠한 게임개발을 하든 필수로 이해하고 있어야 하는 지식입니다.

특히 여러분들이 나중에 게임서버와 통신하는 로직이나, 웹 HTTP통신을 하는 로직을 작성한다면 더더욱이요.


C# 기본 문법중 유니티와 연관하여 도움될만한 키워드

- Reflection

- Delegate/Callback/Lambda

- Attributes

- Properties

- Design Pattern (Singleton)

- Interface

- typeof / GetType()

- String 관련함수

- 반복기 (Enumerator)

- Linq

- Marshal



UniRX

저는 코드를 최대한 쉽게 이해하게 짜는걸 좋아해서 리액티브 프로그래밍을 좋아하지는 않습니다.

저는 적용하면 코드가 더 복잡하게 느껴지더라구요.

하지만 누군가에게는 메리트가 있을 듯 해서 적어보았습니다.


https://github.com/neuecc/UniRx 여기서 소개글을 꼭 보세요.





게임 데이터 DB

수천 수만개의 몬스터나 아이템 데이터를 관리하려면 엑셀같은 테이블이 필요하겠죠

보통 주로쓰는 방식은 Scriptable Object, Excel, CSV등 여러가지 방식으로 관리할 수 있어요.  

저는 구글시트를 추천합니다.

https://shlifedev.tistory.com/33 // 이건 제가 직접 제작한 라이브러리입니다.

https://assetstore.unity.com/packages/tools/integration/google-sheets-for-unity-lite-15570 <- 에셋스토어에 20달러짜리에요.



 


유니티 에디터 기능 적극활용


UnityEditor쪽 네임스페이스 기능 파악을 해두면 좋와용 에디터 내에서 프로그래머나 기획자가 손으로 직접 막 끌어넣고~ 노가다 하는 작업들을

자동화 하는데 편해용


예를들면 에디터 기능을 사용해서 Animation Controller를 자동으로 생성해주는 툴을 만들면 생산성에 도움이 되겠죠.

에디터 GUI를 잘 사용 할 줄 알면 자기 게임에서 쓰이는 게임 에디터 툴도 만들수 있고용.


위에 동영상은 제가 그냥 블로그 포스팅하려고 예전에 만들었던 영상인데 Multiple Sprite를 버튼 한번만 누르면 자동으로 애니메이션 클립으로

생성해주는 툴을 만든것입니당. 동영상 찍으려고 기능만 만든거라 Flip이 안맞긴한데 무시해주세용.ㅋㅋ








IMGUI (OnGUI) 대신 사용할수있는 UI Element


유니티2019.3 이상의 버전을 사용하는경우 UI Element 를 이용해서 쉽게 에디터 GUI를 프로그래밍 할 수 있습니다.

비유를 해드리자면 html/css로 쉽게 사이트 만들듯 UI Element 도 uxml+uss로 쉽게 GUI를 프로그래밍 할 수있습니다.


지금은 또 UI Builder라는게 있어서 GUI로 GUI를 만들수도 있음.. 라떼는 말이야..


저는 IMGUI로 코드짜면 너무 지저분해지고 느려져서 UI Element로 MMO RPG의 맵 배치툴이나 엔피시 에디터 툴들을 작업해 봤었어요.

다만최신버전 유니티가 아니면 사용하는걸 비추천 드립니다. 이전 버전은 적용 안된게 많고 버그도 많아요.


IMGUI 보다 복잡한 GUI를 만들때에는 스타일링이 너무 편해서 IMGUI대신 이걸로 대체될 것 같습니다.

그래도 아직 UI Element는 훌륭하신 분들이 uxml 짜놓을때까지 존버하는걸로. 



포톤 네트워크 or 프라우드넷


이 두개는 다 인디게임 개발자들한테 유명하니까요.. 그냥 전자 후자 왜 쓰는지만 적을게요.

뒤끝은 제가 잘 모르는거니까 패스 ㅎㅎ



직접 서버 짜는게 싫고 p2p 통신으로 충분하다. 

그리고 진짜 아무리 많아봐야... 한 게임룸에 100명 이하 접속한다 - 포톤 네트워크


직접 서버 프로토콜부터 동기화 관련 세부사항 구현이 필요하다.

또한 서버에서 확실하게 데이터를 관리하고 하나하나 다 검증하고싶다.

또한 Physics 관련 물리처리등도 전부다 서버에서 할려고한다. - 프라우드넷



길찾기 알고리즘



A* (Pathfinding)을 짤 줄 알거나 사용할줄 알면 알면 굉장히 도움이 댑니다. 

짤 줄 몰라도 무엇인지 이해를 하고 있으면 좋습니다.

정말 잘 만들어진 에셋으로는 Pathfinding Project라는 에셋을 쓰면 됩니다.

Grid/Mesh/Point 등 이런저런 방식으로 A*를 구현해놨더라구요.




Gizmos


게임 디버깅할때 시각적으로 편리한 기능입니다.

일단 잘 쓰면 무조건 좋습니당.



보간법 관련 지식



보간법 관련 수학기술들을 익히면 좋습니다. 쉬운 예를들면 선형 보간법 같은게 있겠네요.

보간은 생각보다 게임에서 정말 많이 쓰입니다. 네트워크 동기화를 자연스럽게 맞출때도 사용해요.


약간의 (DB관련)서버 관련 지식

클라이언트 개발자인 우리는 어느정도 서버 개발지식도 겸비하는게 좋습니다. 예를들면

서버 지식이 전무해서 유저정보를 저장할때 무작정 클라에서 MySQL에 무작정 커넥션 박는분이 계시는데

파이어베이스db 같은걸 사용하실게 아니라면 Client -> Server -> DB 구조를 타셔야합니다.





간단 (노드js 추천)

생각보다 api서버 만드는게 어렵지 않아서 간단한 orm과 node.js 같은걸 배워두면 위에 언급한 Client -> Server -> DB 구현하기가 쉽습니다.

저도 최근에 공부해보니까 프로그래밍 이해도가 좀 있으면 정말 기초는 금방 배우고 게임개발에 쓸 정도 되긴 합니다.




게임서버/소켓통신 지식

게임클라이언트여도 어느정도 알고있으면 좋습니다.

게임 서버에서 쓰는 어려운 기술들 말고요.

패킷은 무엇인지, 소켓통신은 무엇인지, TCP/UDP 차이가 뭔지 등등.

나중에 서버랑 협업하려면 필요합니다.




게임 패치 시스템 구현

패치시스템 구현을 위해서는 AssetBundle or Addressable에 대한 이해가 필요하고, FTP, CDN, 파일 해시같은 키워드들을 이해해야합니다.


파일 해시같은 경우는 이미 받은 파일은 안받거나 기존파일 업데이트 받아야 하니까 필요하고요.

보통 패치받은 파일의 해시를 json등에 기록해서 확인하죠.

파일 쓰는것도 방식이 여러가지인데, 그냥 이것도 쓰기 나름이구요..


패치 시스템은 C#에 어느정도 기본기가 있다면 쉽게 구현이 가능할거라고 생각합니다.


System.Collection.Generic

System.Collection.Generic에 포함된 자료구조들은 필수로 이해하고 있으셔야 합니다.



Linq

쿼리문과 비슷한 형태로 값을 쉽게 다룰 수 있습니다.



멀티 쓰레딩 관련


Mono를 상속받는 객체는 멀티쓰레딩이 안되는게 유니티 최대 단점입니다.

그래서 보통 유니티로 만든 게임들은 CPU 처리속도를 많이먹죠..


하지만 역으로 모노 비헤이비어 상속이 없는 클래스라면 멀티 쓰레딩 사용 가능하기도 합니다.

이걸 경우를 따져가며 잘 활용할줄 알면 성능향상에 도움이 됩니다.


만약 자기가 게임서버를 만들거나 서버와 직접 통신해야 하는경우 패킷 송수신에는 UnityEngine의 기능이 전혀 필요 없으므로

Mono 종속성이 없는 C# 클래스를 만들어서 다른 쓰레드에서 패킷 송수신을 하고 Dispatch 하는게 하나의 예라고 할 수 있습니다.





캐싱에 대한 이해


캐싱에 대한 이해도 하시는게 좋습니다. 사실 이건 기본이긴 하죠.

예를들어 불러오는데 3초걸리는 이미지를 필요할때마다 매 번 불러오면 많이 느리겠죠.

GC 메모리도 그만큼 불필요하게 소비되구요.



특히 이게 유니티 Update문에서 실행되고 있다고 생각하면 끔찍하죠.

그래서 한 번 미리 불러와놓고 사용하는게 좋습니다.

불러오는 시간이 3초라면, 불러오는건 단 한번만 하면 되니까요. 



드로우콜 및 아틀라스에 대한 이해


드로우콜이 많을수록 cpu 사용량이 증가합니다.

쉬운 이해를 위해 드로우콜 10이면 for문이 매프레임 10번돌다가 드로우콜 100이면 100번돈다고 생각하는 정도로 비유하겠읍니다..

그렇게 간단한게 아니라, 그 루프마다 랜더링 로직이 실행되는것도 있겠죠..


즉 드로우콜은 화면에 표현하고있는 오브젝트가 많아질수록 늘어납니다. 

이 경우 모바일에서는 발열로까지 이어지는데요..


특히 스프라이트를 많이 사용하시는 경우 Atlas를 이용하셔서 비슷한 종류의 스프라이트끼리 묶어서 드로우콜을 최적화하는게 좋습니다.


아틀라스안에 수박,사과,딸기를 넣고 한 씬에 3개를 다 뿌리면 드로우콜은 1이지만

아틀라스에 넣지않고 수박,사과,딸기를 넣고 한 씬에 3개를 뿌리면 드로우콜이 3이됩니다.


작은  아틀라스를 사용하는게 좋겠죠..?




shared material 에 대한 이해

A큐브 B큐브 C큐브에 Test Material을 넣었다 칩시다.

material의 속성을 바꿔서 각각 빨강,노랑,파랑으로 바꾸고 싶은데

이 경우 드로우콜이 3이됩니다.


왜냐하면 material은 속성을 공유합니다. A큐브를 빨강으로 바꾸면 B,C도 빨강이 되는게 정상인데

이걸 강제로 색을 분리시켜버리면 드로우콜은 늘어납니다.


https://docs.unity3d.com/kr/530/ScriptReference/Renderer-sharedMaterial.html

모르고 작업하시는 분들이 있는 것 같아서요. 알아두시면 좋습니다.



셰이더 프로그래밍 및 그래픽 지식





저도 공부를 해야하는 분야입니다.

셰이더 잘 하기는 어렵더라구요.



빌드하려는 타겟 플랫폼에 대한 지식

android는 adb를 사용하는 방법이나, gradle에 대한 이해.. 뭐 구글에 제공하는 plugins 썻다가 에러나면

분석해서 에러가 뭔지 픽스정도는 할 줄 알아야 하는..?


ios도 빌드하고, xcode 사용법이나, xcode 세팅 자동화나.. cocoa pod이었나.. 코코아팟이 뭔지.. 

이런거 기본적인거 알아두면 빌드할때 에로사항이 없겠지요?



DoTween



힙과 스택에 대한 이해, 메모리 관리

요즘같이 콤피타도 빠르고 좋은세상에 꼰머스러운 주제이지만 게임 개발자라면 당연히 필요한 지식이 아닐까 싶읍니다.


사실 C++를 했던 사람이라면 크게 어려운 거 없는 부분이긴 해요.


그래도 본인이 정말 개발자라면 이런 고민은 해보면 좋습니다.


- 스택은 뭐고 힙은 뭐고, 왜 할당 영역이 분리되어있고 스택 할당이 왜 힙 할당보다 더 빠른가?

- new Class()로 인스턴스 하면 힙메모리라 가비지가 생긴다고 들었는데 그럼 매 프레임 자주 호출하는 new Vector3() 호출은 왜 가비지를 안일으키는가?

- 힙 메모리가 동적할당을 위한거라면 도대체 스택 메모리의 사이즈는 어떻게 결정되는걸까?

- 스택 오버 플로우가 무엇인가? 


모르시는 분들은 도움이 분명 될테니 한번 찾아보세요 ㅎㅎ

 



오브젝트 풀링 구현




똥피하기 게임이라고 치면 똥이 플레이어가 죽지 않는이상 영원히 떨어질텐데,

Instantiate로 만든 똥이 쌓이고 쌓일수록 렉도 심할거고, 가비지컬렉션 되는 시점에 툭 끊기기도 할거고..

플레이어가 안죽으면 Instantiate가 계속 되겠죠.. 


그래서 게임에서는 오브젝트 풀링으로 객체를 재사용하는 방식을 자주 사용합니다.







게임 시스템 직접 구현 (★★★★★)


게임 시스템 : 전투,인벤토리,상점,퀘스트,시야(FOV), 길찾기, AI 등등 게임을 이루는 프로그래밍적인 모든것들을 일컫습니다.


게임 시스템은 타인이 만든것에 의존할 수 있는게 아닙니다. 할 수 있어도 남이 만든 틀 위에서 게임만드는 꼴이랑 다를게 없다고 생각합니다.

2D 플랫포머 툴로 2D게임을 만든다해서 림월드 같은 게임을 만들 수 있는건 아니니까요.

자기 게임 시스템은 자신이 구현해 나가야 합니다.


자기 게임에 알맞는 구현이 안나올수도 있고요. 그래서 꼭 직접 만들어보는게 중요하다고 생각해요.

제가 별표를 칠만큼 중요한 이유는 다른거 다 떠나서 이걸 할줄 알면 자기가 원하는 게임은 다 만들 수 있는거니까요.



예를 들어볼까요?


전투시스템도 여러가지가 있죠?


Escape From Tarkov 라는 FPS게임은 다른 FPS랑 다르게 총알이 벽에 맞으면 총알이 깨진 잔해로도 데미지를 입는다네요.

이런 생소한 구현을 기획자가 원하면 일반 인터넷 게시글만 보고 못할겁니다.


철권같은 게임의 경우는 잘하는 사람들은 1프레임 단위로 계산까지 하고 키 입력 커맨드도 정확한 타이밍에 입력해야하는

전투시스템을 갖췄는데, 이런건 인터넷만 보고 만들수 있는게 아니라 자기가 직접 만들어야 겠죠.


롤 같은 게임도 라이즈로 따지면 QEQWQEQ를 빠르게 커맨드해도 다 입력이 되어 나갑니다. 이런거도 전투시스템의 일부인데

Input Queue 대한 이해와 스케줄링에 대한 있어야 겠죠?



인벤토리도 여러가지가 있죠?


예를들면 인벤토리 시스템을 만들고 싶은데 인벤토리도 여러가지 방식이 있습니다.



메이플스토리 같은데서나 쓰는 단순한 인벤토리부터 Escape From Tarkov 혹은 Scum 에서 쓰는 복잡한 인벤토리 시스템까지.

사실 이런 기본적인 것들은 직접 짜라고 하면 다 짤줄 알아야 한다고 생각합니다.


초보자 티를 벗고싶다면 게임 시스템을 자기가 하나하나 전부 구현 해보세요.


시스템 구현은 남의 강의보고 따라한다기 보다 그냥 소스코드를 예제로 참고만하고

작업하는 수준이 되야합니다.







Profiling (프로파일링)




CTRL + 7 누르면 나오는 프로파일러를 사용할 줄 알면 좋아요. 자기 코드가 어디서 느려지고, 어디서 문제가 있는지 파악하기 좋습니다.

할 줄 알면 좋은게 아니라 자기가 조금 사양을 많이 잡아먹을만한 게임을 만든다면 그냥 할 줄 알아야 하는 것 같아요.




시네머신 카메라




저는 이걸 써보고 박수를 쳤습니다. 유니티가 인디게임 개발자들 생각해서 이런거 하나는 잘 만들어 주는거 같아요

카메라 연출을 많이 써야하거나 FPS나 MMO RPG 스타일 Camera를 구현하시는 분들은 한번 배워보시면 어떨까요?



픽셀 퍼펙트에 대한 이해



2d 게임 만드시는 분들은 한번 짚고 넘어가시면 좋습니다.


발열/배터리 문제인식




보통 Application.targetFrame 옵션을 타협해서 발열문제를 해결합니다. 발열은 보통 CPU사용량이 많아지면 생깁니다. 하지만 최근에

Addaptive performance 라는 기술이 생기면서 개선 될 것 같긴 합니다만 최대한 자기가 만든 게임을 잘 최적화 해서

발열을 줄이시는게 중요합니다.


UnityEngine.UI (UGUI)


길게 말할것도 없고 UGUI 관련 스크립팅을 능숙하게 할 줄 알아야 하는건 당연하죠. 본인 게임에 UI를 많이 쓴다면 UGUI 관련 스크립팅을

능숙하게 하시는게 좋습니다.




String 관련함수

스트링 관련 함수들을 잘 쓰면 좋습니다

split, join, last, length, indexof, substring, startswith 함수등은 정말 많이 씁니다.






게임에 유저 Modding(모드) 지원


만약 본인이 게임에 모딩지원을 추가하고싶으면 아래 키워드를 검색해서 공부해보세요

1. Harmony (강력추천)

2. Unity Lua Binding




Rider IDE


비주얼 스튜디오 쓰다가 젯브레인 Rider로 갈아타니 코드 작성속도가 1.5배는 좋아졌습니다.

비효율적인 코드도 rider가 찾아주고..


대신 유료라 돈아까우면 vs community 써야죠 ㅠㅠ




System.Reflection

리플렉션을 정말 잘 사용하면 효율적인 코드를 작성할 수 있습니다.

Odin Inspector같은 에셋도 사실 리플렉션을 겁나 잘 써서 만든 결과물이라 볼 수 있습니다.



System.IO

System.IO.Path 클래스나 System.IO.File, System.IO.Direcotry 쪽 함수들은 생각보다 많이 사용합니다.

뭐 어떤 언어에서든지 있는 파일시스템 관련 네임스페이스니까 잘 익혀두면 언젠가 꼭 도움이 됩니다.



Regex



여러분들이 C#을 안해도 regex 문법은 언제든지 어디에서나 유용하게 쓰일것 입니당.

이걸 배우는데에는 제가 최근에 즐겨보고있는 유투버분이 올린 영상이 큰 도움이 됩니다.


더쓰면 글이 자꾸 날아가네요. 다른내용 원래 더 있었는데 수정만 몇번째인지.. ㅜㅜ
나중에 다른곳에 다시 포스팅해서 올릴게요


추천 비추천

103

고정닉 20

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
1858 설문 충격 고백으로 놀라게 한 스타는? 운영자 21/09/21 - -
76530 뉴스 [겜ㅊㅊ] 괴짜력으로 승부하는 스팀 시뮬레이터 7선 게임메카갤로그로 이동합니다. 21.09.21 4 0
52874 공지 개발일지 모아보기 Goranic갤로그로 이동합니다. 20.07.02 8066 3
52873 공지 게임제작 초심자를 위한 글 모음 [2] Goranic갤로그로 이동합니다. 20.07.02 15531 13
76531 일반 폰 기종마다 테스트 어떤식으로해? ㅇㅇ(58.233) 09.21 20 0
76529 일반 네코랜드로 개발해서 수익본담에 유니티로 개발하려는데 어떰 ? [2] ㅇㅇ갤로그로 이동합니다. 09.21 55 0
76528 일반 기획 '해줘' [2] ㅇㅇ(124.57) 09.21 47 0
76527 일반 이거 해결좀 ㅠㅠ C# 궁금증.. [16] 서연이아빠갤로그로 이동합니다. 09.21 112 0
76526 개발일 SPACE 첫번째 업데이트 [4] 이셋갤로그로 이동합니다. 09.21 48 2
76525 일반 옵젝풀링 질문@@ [6] ㅇㅇ(58.235) 09.21 74 0
76524 질문 인텔 내장 그래픽으로 개발해본 사람 있음? [2] ㅇㅇ갤로그로 이동합니다. 09.21 73 0
76523 일반 클래스 관련 질문해도됨? [29] ㅇㅇ(121.170) 09.21 137 0
76522 일반 워3 맵에딧도 포트폴리오 쓸 수 있냐? [6] ㅇㅇ(211.49) 09.21 97 0
76521 일반 3D 모델링 질문 [6] ㅇㅇ갤로그로 이동합니다. 09.21 93 0
76520 일반 3d 모델 이런거 사용해봄? ㅇㅇ(1.249) 09.21 76 0
76519 일반 고도엔진이 뭐임 [7] ㅇㅇ갤로그로 이동합니다. 09.21 98 0
76518 일반 유니티쌩입문 기본c#용어는 다 외워야겠지? [2] ㅇㅇ(220.76) 09.21 69 0
76517 일반 블렌더에서 이 메뉴 또 보는 방법좀 [2] ㅇㅇ(1.251) 09.21 59 0
76516 일반 게임 모델 종류가 뭐뭐 있나요? [2] ㅇㅇ갤로그로 이동합니다. 09.21 67 0
76515 일반 코딩 존나 재밌는데 dx11로 imgui 로그인서버 구현중 [2] ㅇㅇ(175.193) 09.21 74 0
76514 일반 스리랑카 사람한테 회사 로고 맡긴 후기 [4] 성난소갤로그로 이동합니다. 09.21 148 4
76512 일반 나는 프로그래밍 자체가 최고의 게임이라고 생각했는데.. [11] triva갤로그로 이동합니다. 09.21 260 0
76511 개발일 태그헌터 개발일지 1 [데모 출시] [5] 태그헌터(118.220) 09.21 172 4
76510 일반 [홍보] 리듬 게임에 퍼즐을 더한 게임 [1] ㅇㅇ(49.165) 09.21 118 1
76509 질문 2D 에서 타겟을 가르키는 화살표 구현 질문.. [7] ㅇㅇ(119.66) 09.21 163 0
76506 일반 앱수익 지속성 있음? [8] ㅇㅇ갤로그로 이동합니다. 09.21 244 0
76505 일반 C언어 자료구조까지 거의 마스터했으면 C#은 금방함? [7] ㅇㅇ(223.39) 09.21 190 0
76504 일반 이번 년도 초에 게임을 출 시 했는데 [3] ㅇㅇ(211.110) 09.21 220 1
76503 일반 몬스터가 중간에 쫓다가 멈추는 거 어캐 구현함 [5] ㅇㅇ(14.53) 09.21 182 0
76502 일반 러닝액션 모바일게임 [mazmorra] 베타버전 출시했습니다! [13] t UTRO(112.161) 09.21 403 15
76501 질문 쌩늅 유니티 입문 서적 추천 좀 [7] ㅇㅇ(1.233) 09.21 102 0
76500 일반 레이캐스트를 emter exit 구분할수 있냐 [15] ㅇㅇ(59.26) 09.21 110 0
76499 일반 덜불효자 선택존 [7] 아이리쨩다이쇼리갤로그로 이동합니다. 09.21 196 0
76498 일반 유니티 폰트크기 너무 쥐좆만해서 목아픔 [8] ㅇㅇ(115.21) 09.21 130 0
76496 일반 클라이언트쪽 포트폴리오 질문좀 [3] ㅇㅇㅇㅇ(106.101) 09.21 111 0
76495 일반 자작 게임음악 앞부분 만들엇어요 [2] ㅇㅇ(223.38) 09.21 123 2
76494 일반 얼리버드 기상 DoggyStyleKing갤로그로 이동합니다. 09.21 56 1
76493 질문 유니티 오디오 속도조절 관련해 질문이여 [1] ㅇㅇ(49.166) 09.21 65 0
76490 일반 자연스러운거 선택좀 [7] ㅇㅇ(211.176) 09.21 199 0
76489 개발일 오늘한거 ㅇㅇ(124.57) 09.21 140 3
76488 질문 학원에서 배우는 엔진개발 수준이 어느정도임? [3] ㅇㄹ(125.179) 09.21 267 0
76487 일반 유니티 사운드 오브젝트 관리 다들 어떻게함? [3] ㅇㅇ(39.118) 09.21 131 0
76486 일반 지금부터 3개월만에 겜하나 만들기 들어간다 [1] ㅇㅇ(218.157) 09.21 143 0
76485 개발일 비쥬얼 노벨 병원생활 개발일지 #1 [8] 불건전한닉네임갤로그로 이동합니다. 09.21 368 8
76484 일반 디비니티 같은 턴제 rpg 만드는거 난이도 어떰? [4] ㅇㅇ(223.38) 09.21 139 0
76483 일반 3d의 xyz의 z축은 뭘 의미함? [13] ㅇㅇ(115.21) 09.21 175 0
76482 개발일 펭귄 게임 개발일지 -6- [7] Frustman갤로그로 이동합니다. 09.20 405 20
76481 일반 옷벗기기 게임 lemon(223.33) 09.20 158 0
76480 일반 디자인 패턴이 왜 중요하다는지 이제야 깨달았음 [4] ㅇㅇ(14.7) 09.20 255 2
76479 일반 올해안에 취직하려면 유니티 2019 랑 2020 중에 어떤거 써야함. [3] 브레이버(175.196) 09.20 164 0
76476 일반 c# 간단한 질문 하나만.. [6] ㅇㅇ(220.76) 09.20 204 0
76475 일반 구글플레이 랭킹 업데이트가 안되고 있나? [2] ㅇㅇ(175.113) 09.20 60 0
76474 일반 생각보다 존나 바쁘네 삐오갤로그로 이동합니다. 09.20 104 0
76473 개발일 Project J 개발일지 #2 [11] ㅇㅇ(220.120) 09.20 399 15
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

힛(HIT)NEW

그때 그 힛

1/3