C++ 게임 개발자를 위한C# 활용 기법김재석, ㈜넥슨코리아, gim@nexon.co.kr1
2[ɡ̊ɪm̚ ʨæːsɤk̚]/ɡim ɟɛːzʌɡ/• 책임연구원• 2010/2011, 마비노기2• 2006/2009, 마비노기 영웅전테크니컬 디렉터• 2004/2005, 마비노기• 2003/2004, 프로젝트 T2• 2...
C++을 사용하는 이유?게임 개발에서3
C++을 사용하는 이유?게임 개발에서4
C++을 사용하는 이유?Win32 API게임 개발에서5
C++을 사용하는 이유?DirectX API게임 개발에서6
Win32 APIDirectX API응용 프로그램 인터페이스: 저수준 프로그래밍7
8
예쁘다/많이 보인다/멀리 보인다게임에서 초당 프레임은 절대적이다9
어떻게 해야 할 지 명령하는구체적인 코드저수준 프로그래밍10
무엇을 할지 선언하는추상적인 코드고수준 프로그래밍11
Marc DonnerIBM Watson ResearchCenterOf all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivia...
컴파일 오류 對 런타임 오류Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of t...
형식 추론 對 형식 지정명시적 형변환 對 암시적 형변환Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logi...
가비지 수집 對 명시적 자원 관리Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.O...
여러분이 잡아야 하는 진짜 버그Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of...
비개발자가 작성하는 코드라면?Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of ...
값은 스택에서 바로 날리고참조는 가비지 수집기에게 맡기자Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial log...
추론시켜도 되는 부분은 맡기고var s = “string”;의미가 숨어 위험하면 드러낸다if (p != null)Of all my programming bugs, 80% are syntax errors.Of the re...
타이핑을 줄인다Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of the rema...
자료구조당장 C#을 써야 한다고 칠 때 알아둘만한 것들22
기본 자료형• 정수형int.MaxValue, int.MinValue• 열거형TEnum value;Enum.TryParse(s, true, out value);Enum.GetValues(typeof(TEnum))23
문자열 對 버퍼• 문자열은 변경 불가정수형와 동급의 리터럴로 사용 가능• 문자열을 수정하려면 버퍼 이용System.Text.StringBuffer24
대리자• 추상화된 함수 포인터Func<Type, bool> predicate =value => value == default(Type);25
• std::vector<T>• std::queue<T>• std::stack<T>• std::list<T>• std::map<Key, T>• std::set<T>System.Collections.Generic• Lis...
• tbb::concurrent_vector<T>• tbb::concurrent_queue<T>• tbb::concurrent_stack<T>• tbb::concurrent_hash_map<Key, T>System.Co...
문법 설탕들알아두면, 반복 작업을 줄일 수 있는 편리한 문법28
반복자• 스테이트 머신 코드를 컴파일러가 생성IEnumerable<T> Where<T>(IEnumerable<T> source,Func<T, bool> predicate){if (source == null) yield ...
초기화 문법• 지역 변수/배열의 형식은 추론멤버 필드/속성 초기화도 같이 작성var list = new List<int>() { 1, 2 };var values = new[]{new SomeKeyValue(){Name ...
확장 메서드• 정적 클래스의 메서드를특정 타입의 멤버 메서드처럼 취급31
읽을거리• C++ 프로그래머를 위한 C#, NDC201132
Q&A33twitter:@tcaesvk
월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전 기법 세미나, C++ 게임 개발자를 위한 C# 활용기법
Upcoming SlideShare
Loading in …5
×

월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전 기법 세미나, C++ 게임 개발자를 위한 C# 활용기법

1,266 views
1,045 views

Published on

2011-12-02
월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전 기법 세미나

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,266
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

월간 마이크로소프트웨어 창간 28주년 기념 C++ 개발자를 위한 게임 프로그래밍 실전 기법 세미나, C++ 게임 개발자를 위한 C# 활용기법

  1. 1. C++ 게임 개발자를 위한C# 활용 기법김재석, ㈜넥슨코리아, gim@nexon.co.kr1
  2. 2. 2[ɡ̊ɪm̚ ʨæːsɤk̚]/ɡim ɟɛːzʌɡ/• 책임연구원• 2010/2011, 마비노기2• 2006/2009, 마비노기 영웅전테크니컬 디렉터• 2004/2005, 마비노기• 2003/2004, 프로젝트 T2• 2001/2003, Oz World
  3. 3. C++을 사용하는 이유?게임 개발에서3
  4. 4. C++을 사용하는 이유?게임 개발에서4
  5. 5. C++을 사용하는 이유?Win32 API게임 개발에서5
  6. 6. C++을 사용하는 이유?DirectX API게임 개발에서6
  7. 7. Win32 APIDirectX API응용 프로그램 인터페이스: 저수준 프로그래밍7
  8. 8. 8
  9. 9. 예쁘다/많이 보인다/멀리 보인다게임에서 초당 프레임은 절대적이다9
  10. 10. 어떻게 해야 할 지 명령하는구체적인 코드저수준 프로그래밍10
  11. 11. 무엇을 할지 선언하는추상적인 코드고수준 프로그래밍11
  12. 12. Marc DonnerIBM Watson ResearchCenterOf all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of the remaining 4%, 80% are pointer errors.And the remaining 0.8% are hard.12
  13. 13. 컴파일 오류 對 런타임 오류Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of the remaining 4%, 80% are pointer errors.And the remaining 0.8% are hard.13
  14. 14. 형식 추론 對 형식 지정명시적 형변환 對 암시적 형변환Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of the remaining 4%, 80% are pointer errors.And the remaining 0.8% are hard.14
  15. 15. 가비지 수집 對 명시적 자원 관리Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of the remaining 4%, 80% are pointer errors.And the remaining 0.8% are hard.15
  16. 16. 여러분이 잡아야 하는 진짜 버그Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of the remaining 4%, 80% are pointer errors.And the remaining 0.8% are hard.16
  17. 17. 비개발자가 작성하는 코드라면?Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of the remaining 4%, 80% are pointer errors.And the remaining 0.8% are hard.18
  18. 18. 값은 스택에서 바로 날리고참조는 가비지 수집기에게 맡기자Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of the remaining 4%, 80% are pointer errors.And the remaining 0.8% are hard.19
  19. 19. 추론시켜도 되는 부분은 맡기고var s = “string”;의미가 숨어 위험하면 드러낸다if (p != null)Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of the remaining 4%, 80% are pointer errors.And the remaining 0.8% are hard.20
  20. 20. 타이핑을 줄인다Of all my programming bugs, 80% are syntax errors.Of the remaining 20%, 80% are trivial logical errors.Of the remaining 4%, 80% are pointer errors.And the remaining 0.8% are hard.21
  21. 21. 자료구조당장 C#을 써야 한다고 칠 때 알아둘만한 것들22
  22. 22. 기본 자료형• 정수형int.MaxValue, int.MinValue• 열거형TEnum value;Enum.TryParse(s, true, out value);Enum.GetValues(typeof(TEnum))23
  23. 23. 문자열 對 버퍼• 문자열은 변경 불가정수형와 동급의 리터럴로 사용 가능• 문자열을 수정하려면 버퍼 이용System.Text.StringBuffer24
  24. 24. 대리자• 추상화된 함수 포인터Func<Type, bool> predicate =value => value == default(Type);25
  25. 25. • std::vector<T>• std::queue<T>• std::stack<T>• std::list<T>• std::map<Key, T>• std::set<T>System.Collections.Generic• List<T>• Queue<T>• Stack<T>• LinkedList<T>• Dictionary<TKey,TValue>• HashSet<T>26
  26. 26. • tbb::concurrent_vector<T>• tbb::concurrent_queue<T>• tbb::concurrent_stack<T>• tbb::concurrent_hash_map<Key, T>System.Collections.Concurrent• ConcurrentBag<T>• ConcurrentQueue<T>• ConcurrentStack<T>• ConcurrentDictionary<TKey, TValue>27
  27. 27. 문법 설탕들알아두면, 반복 작업을 줄일 수 있는 편리한 문법28
  28. 28. 반복자• 스테이트 머신 코드를 컴파일러가 생성IEnumerable<T> Where<T>(IEnumerable<T> source,Func<T, bool> predicate){if (source == null) yield break;foreach (T value in source){if (!predicate(value)) continue;yield return value;}}29
  29. 29. 초기화 문법• 지역 변수/배열의 형식은 추론멤버 필드/속성 초기화도 같이 작성var list = new List<int>() { 1, 2 };var values = new[]{new SomeKeyValue(){Name = “name”,Value = null,},};30
  30. 30. 확장 메서드• 정적 클래스의 메서드를특정 타입의 멤버 메서드처럼 취급31
  31. 31. 읽을거리• C++ 프로그래머를 위한 C#, NDC201132
  32. 32. Q&A33twitter:@tcaesvk

×