[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo KimProtocol:hyperspace Diver 개발 포스트모템
IGC2017에서 발표한 세션의 자료를 공유합니다.
이전 NDC17에서 발표한 내용과는 초점을 조금 다르게 잡고 새롭게 구성한 것입니다.
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우본 세션에서는 Protocol:hyperspace Diver의 개발 과정 전반에 대한 포스트 모템을 수행하며 기획적인 부분을 바탕으로 제기된 요구사항에 대응하기 위한 기술적인 이슈에 어떻게 대응하였는지를 살펴볼 예정입니다. 게임을 기획하며 게임에 어떤 기능들이 요구되었으며, 엔진 레벨에서부터 모바일 게임을 개발하는 과정에서 이런 요구사항들에 어떻게 대응하였는지를 살펴봅니다. 게임을 위한 전체적인 설계 및 문제 해결 전략과 각각의 문제 해결 과정에서 세부 내용에 대한 기술적 노하우를 공유합니다.
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍NDOORS일반적인 Visual 기반 프로그래밍 이외, 콘솔 프로그래밍의 필요성을 재조명하고자 합니다.
강연을 통해, Visual 기반 프로그래밍에 익숙해져 있는 (입문)개발자들에게, 콘솔 프로그래밍을 통해, 더욱 효과적으로 개발할 수 있도록 돕고자 합니다.
[NDC17] Protocol:hyperspace Diver 개발 포스트모템Young Soo KimProtocol:hyperspace Diver 개발 포스트모템
- 엔진 개발부터 시작하는 모바일 인디 리듬게임 개발
NDC17에서 발표한 세션의 자료를 공유합니다.
슬라이드는 https://goo.gl/EiUCgk 에서도 다운로드 받으실 수 있습니다.
CoreDot TechSeminar 2018 - Session1 Park JihunCore.Today코어닷 기술 세미나 2018
Session #1 : 박지훈 (코어닷투데이 개발자)
파이썬을 이용해 세상에서 가장 쓸모없는 홈페이지 만들기
14:00 ~ 14:50
Python Flask로 사용자가 글을 쓰면, 마음대로 수정하고 삭제해버리는 쓸모없는 웹사이트(Useless Website)를 만들어 봅니다.
- Python라이브러리인 flask을 이용한 웹사이트 개발 과정 소개
- MongoDB를 이용해 웹사이트상에서 게시물 작성,조회,수정,삭제(CRUD) 기능 구현 실습
https://coredottoday.github.io/2018/10/15/Coredot-기술-세미나/
https://www.youtube.com/watch?v=gfbWxyz7Zeo
LinqPad for DevOps성수 이C# 을 서비스에서 사용한다면 LinqPad는 필수입니다!
현재 live service 중인 project에서 linqpad의 사용 예시를 들어
운영과 서비스 활용 사례를 설명합니다.
좋은 툴을 알려주신 lacti 님 감사합니다. (__)
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템Young Soo KimProtocol:hyperspace Diver 개발 포스트모템
IGC2017에서 발표한 세션의 자료를 공유합니다.
이전 NDC17에서 발표한 내용과는 초점을 조금 다르게 잡고 새롭게 구성한 것입니다.
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우본 세션에서는 Protocol:hyperspace Diver의 개발 과정 전반에 대한 포스트 모템을 수행하며 기획적인 부분을 바탕으로 제기된 요구사항에 대응하기 위한 기술적인 이슈에 어떻게 대응하였는지를 살펴볼 예정입니다. 게임을 기획하며 게임에 어떤 기능들이 요구되었으며, 엔진 레벨에서부터 모바일 게임을 개발하는 과정에서 이런 요구사항들에 어떻게 대응하였는지를 살펴봅니다. 게임을 위한 전체적인 설계 및 문제 해결 전략과 각각의 문제 해결 과정에서 세부 내용에 대한 기술적 노하우를 공유합니다.
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍NDOORS일반적인 Visual 기반 프로그래밍 이외, 콘솔 프로그래밍의 필요성을 재조명하고자 합니다.
강연을 통해, Visual 기반 프로그래밍에 익숙해져 있는 (입문)개발자들에게, 콘솔 프로그래밍을 통해, 더욱 효과적으로 개발할 수 있도록 돕고자 합니다.
[NDC17] Protocol:hyperspace Diver 개발 포스트모템Young Soo KimProtocol:hyperspace Diver 개발 포스트모템
- 엔진 개발부터 시작하는 모바일 인디 리듬게임 개발
NDC17에서 발표한 세션의 자료를 공유합니다.
슬라이드는 https://goo.gl/EiUCgk 에서도 다운로드 받으실 수 있습니다.
CoreDot TechSeminar 2018 - Session1 Park JihunCore.Today코어닷 기술 세미나 2018
Session #1 : 박지훈 (코어닷투데이 개발자)
파이썬을 이용해 세상에서 가장 쓸모없는 홈페이지 만들기
14:00 ~ 14:50
Python Flask로 사용자가 글을 쓰면, 마음대로 수정하고 삭제해버리는 쓸모없는 웹사이트(Useless Website)를 만들어 봅니다.
- Python라이브러리인 flask을 이용한 웹사이트 개발 과정 소개
- MongoDB를 이용해 웹사이트상에서 게시물 작성,조회,수정,삭제(CRUD) 기능 구현 실습
https://coredottoday.github.io/2018/10/15/Coredot-기술-세미나/
https://www.youtube.com/watch?v=gfbWxyz7Zeo
LinqPad for DevOps성수 이C# 을 서비스에서 사용한다면 LinqPad는 필수입니다!
현재 live service 중인 project에서 linqpad의 사용 예시를 들어
운영과 서비스 활용 사례를 설명합니다.
좋은 툴을 알려주신 lacti 님 감사합니다. (__)
Gdc 14 bringing unreal engine 4 to open_glchangehee leeThis document discusses bringing Unreal Engine 4 to OpenGL by porting its render hardware interface (RHI) to support OpenGL. It describes mapping the D3D11-based RHI to OpenGL, developing a cross-compiler to compile HLSL shaders to GLSL, addressing differences between D3D and OpenGL like texture coordinate systems, and optimizations to achieve performance parity with D3D11. It also covers bringing UE4 to Android by leveraging an NVIDIA Tegra K1 mobile chip's full OpenGL 4.4 support.
Smedberg niklas bringing_aaa_graphicschangehee leeBringing AAA graphics to mobile platforms
This document discusses techniques for bringing console-level graphics to mobile platforms using tile-based deferred rendering GPUs common in smartphones and tablets. It provides an overview of the architecture of tile-based mobile GPUs like ImgTec SGX and how they process vertices and pixels in tiles. It then discusses optimizations for mobile like using multi-sample anti-aliasing to reduce memory usage, form-fitting alpha blended geometry, and avoiding buffer restores and resolves. Specific rendering techniques like god rays and character shadows are explained.
Fortugno nick design_and_monetizationchangehee leeThis document discusses design and monetization strategies in free-to-play (F2P) games. It analyzes three types of F2P games: single-player, social multiplayer, and hardcore multiplayer games. For each type, it examines the player incentives, core gameplay mechanics, and monetization approaches that are commonly used. Across all game types, some lessons highlighted include making the casual experience complete but sub-optimal to encourage continued play, exploring hardcore player motivations for monetization opportunities, and leveraging the social aspects of gameplay through collaboration, competition and status.
Paper games 2013changehee leeStone Librande discusses using paper simulations to understand the fundamental design principles of digital games. He instructs participants to select a digital game and remove its controller, sound, music and graphics to focus on its core gameplay. Participants are divided into groups and tasked with quickly prototyping the selected game using only pencils, index cards and dice. This allows designers to test how the game's aesthetics survive without technology. The process is intended to be fast, cheap and help designers understand existing games or keep them focused while developing new ones.
V8changehee leeV8 is the JavaScript engine used in Google Chrome. It is open source and written in C++ with some parts implemented in embedded JavaScript. V8 uses just-in-time compilation, precise garbage collection, inline caching, and hidden classes to optimize performance. It supports 64-bit versions and has advantages like C-like syntax and bit operations. While documentation is limited, it allows embedding JavaScript in C++ applications and extending it with user libraries.
Mobile crossplatformchallenges siggraphchangehee leeThe document discusses various challenges and solutions related to developing cross-platform games for iOS and Android. It covers differences in GPU architectures between platforms, techniques for handling different screen resolutions and texture formats, approaches for optimizing shaders, and strategies for minimizing overhead from the OpenGL ES 2.0 API. The document provides recommendations for areas like sorting geometry, using shader permutations, offloading work to the CPU, and leveraging new capabilities in OpenGL ES 3.0.
개발 과정 최적화 하기 내부툴로 더욱 강력한 개발하기 Stephen kennedy _(11시40분_103호)changehee leeThe document discusses techniques for robust versioning of serialized data across changes to data structures and classes. It proposes a snapshot-based versioning system that records how to update data between different snapshots by comparing metadata and defining update functions. This allows chaining updates between multiple previous versions to reach the current one without constraining design changes or requiring conditional logic based on version numbers.
Light prepasschangehee leeThe document discusses light pre-pass (LPP) rendering techniques for deferred shading. LPP involves splitting rendering into a geometry pass to store surface properties, a lighting pass to store lit scene data in a light buffer, and a final pass to combine the information. The document describes optimizations for LPP on various hardware, including techniques for efficient light culling and storing data. It also discusses approaches for implementing multisample anti-aliasing with LPP.
Windows to reality getting the most out of direct3 d 10 graphics in your gameschangehee leeThe document discusses key areas for optimizing Direct3D 10 graphics performance in games, including using the debug layer, reducing draw calls, efficiently updating constant buffers, managing state objects, and following strict shader linkage rules. It provides tips such as splitting constants by frequency of update into multiple buffers to avoid redundant uploads, pre-creating all possible state objects, and using instancing to draw similar objects with a single draw call.
Valve handbook low_reschangehee leeThis document is a handbook for new employees at Valve that outlines the company's unique structure and culture. It discusses that Valve is self-funded, owns its intellectual property, and has a flat, non-hierarchical structure where employees can work on projects they choose. The handbook provides guidance for new hires on navigating their first day, month, and six months at Valve by choosing projects, getting feedback from peers, and focusing on growth over formal roles or titles. It emphasizes that hiring and bringing in talented people is extremely important to Valve's continued success.
2. 개요
• 기존에 있는 엔진을 이용해서, 모바일용 엔
진으로 변신시켜보자!
– DirectX + OpenGL ES
– WIN32 + __APPLE__
• 하나의 엔진 코드로 윈도우와 모바일을 모
두 처리한다. (A.K.A 슈퍼클래스)
• 변신 캐~ 삽질기를 소개한다.
10. xcode로 소스 옮기기
• 모르겠다… 도움 요청!
– 세영님과 찬호님에게 무작정 물어보기 시작!
– (연락이 두절된 차태상군은 저주하겠음!!!)
• 방법
1. 윈도우 기반에서 mac에서 돌아갈 수 있는 dll을 만들
어서 가지고 오는 방법이 있다고 함
2. xcode에서 프로젝트를 하나 생성해서, 소스코드를
추가해서, 라이브러리를 만드는 방법
• 2번 방법을 선택하기로 함.. (1번은 모르겠다!)
11. Xcode에서 라이브러리 만들기
• “cocos touch static library”라는 것으로
빈 라이브러리 프로젝트를 하나 만들었음.
• 빈 프로젝트에 무작정 소스코드를 모두 추
가하고, 용감하게 빌드 버튼을 눌렀음!
• 컴파일 에러 22878개!!!! 뙇!
• 에러 메시지는 생전 처음 보는 것들… ㅠㅠ
13. 정신차리고 다시 …
• 빈 프로젝트에 다른 코드들을 포함하고 있지
않는 독립적인 코드들부터 추가해보기로 함.
(Math, Util, …)
• 조금씩 자신감이 생기면서, 연관성이 조금씩
큰 코드들을 추가해나가기 시작!
• 자신감이 완전 붙어서, Core 클래스들을 붙여
보기로 함 (OpenGL ES 관련)
– 컴파일에러 : 16758개로 증가!!!
• 근성으로 수정!!!!
• 될 때까지!!!!!
15. 대체로 이런 문제들…
• Stdlib가 아닌 window에서 많이 확장된 사용하는 확장 함수들
이 전부 에러…
– 특히, unicode를 사용하면, 어마어마하다.
– “_”가 붙어서 시작하는 함수들을 거의 사용이 불가능.
• _wtoi, _wtof, _wtol, _wfopen, _wsplitpath 등…
– _T(), _ASSERT(), _countof() 와 매크로 없음
– BYTE, DWORD, BOOL, LONG 선언 없음
– Stl의 인터페이스도 조금 다르다.
– Template 내부에서 사용할 때에는, typename으로 type을 명확히
해주어야 함.
• #include 순서에 민감하다.
• #include <opengles/opengles.h> -> #include <opengles.h>로
…
• 매크로 문법이 조금 다르다.
– #define _WT(A) L#A // __TT(줸장) == L”줸장”
– #deifne _MT(A) L## #A // __TT(줸장) == L”줸장”
16. 코드 페이지…
• 코드에 한글 문자열을 사용했을 때…
– 윈도우에서 UTF-8로 저장해서 해결~
– 하지만, mac에서는 “Text Encoding”을 Korean으로…
• XCODE에서 코드를 수정하고, 소스를 윈도우로 가
지고 오면, 코드페이지가 안 맞아서 한글도 깨지
고, 코드도 다 흐트러짐!
– 파일 형식과 Line Ending을 윈도우 환경으로 맞춰줘도
안되네?
– 그런 이유로 visualstudio에서만 코딩 -> xcode에서
는 컴파일만…gee
– (해결책에 대한 제보 부탁!!!)
17. 기타 문제점들
• C++코드 내에서 objective-C 코드를 사용한다
면, 파일형식을 “.objcpp”로 지정해주어야 한다.
• 외부라이브러리
– Zlib과 같은 외부라이브러리는 별도의 프로젝트를 만
들어서 빌드해서 링크해도 상관이 없다고 하지만, 대체
로 그냥 엔진 프로젝트에 외부라이브러리 코드를 같이
추가해서 빌드해서 사용하는 듯…
• 유니코드 변환
– MultiByteToWideChar 를 사용할 수 없으므로, 대체함
수로 만들어주어야 함.
– Mbstowcs 과 같은 함수나 iconv를 이용해서 변환을 한
다.
• SetLocal(LC_ALL, “”) 설정 주의
• iconv : linux 계열에서 사용
20. …ING
• 현재 계속 작업 중…
– 아직 추가해야 할 파일이 100개는 남았다.
• 여전히 xcode 랑 친해지지 못하고 있음.
– Xcode를 4.2로 업데이트 했더니, 이젠 xcode도 모르겠다.. ㅜㅜ;
• Mac과 Win을 오가는 2대의 작업은 정신적 피로도가 상당히 높
다.
– Mac의 키보드와 마우스를 장시간 사용하니, 손목이 돌아갈 거 같
음.
– 5시간 정도 작업하면, 점점 두 PC간의 자판배열과 마우스 조작에
혼돈이 오기 시작!
• 노트북 마우스를 쓰담~ 쓰담 하기 시작!
• 한/영 전환과 control 위치가 … -_-;;
21. 결론
• 이태리 장인의 한 땀 한 땀의 노력이 필요한 작업임
– 별로 추천해주고 싶은 작업이 아니다!
• 자료를 검색해봐도, c++을 이용한 native 개발에 대한 팁은 별
로 없던데?!
– KLDP.org 에서 리눅스 개발에 대한 팁 참조
– Stack Overflow 라는 사이트에서 많이 참조
• 오픈소스프로젝트를 참고하자
– Irricht 나 Orge3D의 경우, iOS 용으로 이미 포팅이 되어 있음.
– 프로젝트 설정 및 OpenGL ES 처리 등을 참고하면 좋다.
• 최대한 경험있는 지인들에게 도움을 요청하자!
– Xcode 환경 설정, mac에서의 처리에 대한 약간의 팁만 알려줘
도, 많은 삽질을 줄일 수 있다.
–저 좀 살려주세요! ㅜㅜ