내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
5월 20일 - 6월 4일: 2D 물리 엔진을 극복하세요.
6월 4일 - 6월 13일: "3D 수학의 기초"를 극복하세요.
6월 13일 - 6월 20일: "3D 그래픽 튜토리얼"을 극복하세요.
6월 21일 - 6월 22일: "레이캐스팅 게임 튜토리얼"을 극복하세요.
6월 23일 - 7월 1일: "Windows 게임 프로그래밍 마스터 기술"을 극복하세요.
7월 2일 - 7월 6일: "Atari 2600 컴파일 게임 개발"을 극복합니다.
7월 7일 - 7월 11일: "x86/x64 어셈블리 언어"를 극복합니다.
다음 목표 : "3D 게임 프로그래밍 마스터 스킬"
이번에는 "외계" 행성에서의 또 다른 전투입니다. 어제 60km를 자전거로 갔습니다. 평범한 60km가 아니었습니다. 돌아왔을 때 마지막 20km는 모두 지쳤습니다. 오늘 정신상태가 별로 좋지 않네요. 그냥 이를 악물고 튜토리얼을 마쳤다고 할 수 있겠네요.
그러나 나는 이 느낌도 좋아한다는 것을 알았다. Atari 2600 편집만큼 낯설지는 않습니다.
조립 학습은 실제로 어떤 실수도 할 수 없는 일종의 최고의 게임과 같습니다. 나는 한 학기 동안 기억할 수 있는 것보다 더 많은 메모를 했습니다. 비록 몇 문장임에도 불구하고 촘촘하게 메모를 해 두었습니다. 대학 다닐 때 이렇게 열심히 일할 수 있었더라면 좋았을 텐데.
이번에 두 가지 튜토리얼을 배웠는데, 하나는 X86-32비트입니다. 하나는 x86-64비트입니다. 둘 다 자신의 강점과 약점을 가지고 있습니다. 예를 들어 첫 번째 튜토리얼에서는 함수 호출 방법을 끝까지 가르치지 않았습니다. 64비트의 기본은 잘 설명되어 있지만 고급 응용프로그램은 전혀 다루지 않습니다.
이 과정을 공부하고 나서 가장 큰 깨달음은 어셈블리가 상대적으로 "낮은 수준"인 것이고, 결국 오늘날의 언어에는 "고수준"이라는 꼬리표가 붙는다는 것이었습니다. 언어".
이것은 내가 사용하는 프로그래밍 언어가 총과 대포라면 어셈블리 언어는 차가운 무기라는 인상을 줍니다. 어떻게 생각하든 오히려 '뒤쳐진' 인상을 준다. Atari 2600 어셈블리를 배울 때도 같은 느낌을 받았습니다.
하지만 x86 어셈블리를 배우고 나서 이런 느낌은 완전히 바뀌었습니다. 조립체는 단순히 '차세대' 무기가 아니라 '첨단기술'인 레이저검이다.
"약하다"가 아니라 "사용하기 어렵다"는 것뿐입니다. 그에 비해 그는 엄청나게 강하다.
나는 사람들이 어셈블리 학습에 대해 이야기하는 것을 듣곤 했는데, 오늘날의 컴파일러가 매우 발전했다는 것을 여러 번 보았습니다. 어셈블리를 배우더라도 작성하는 코드는 이전만큼 효율적이지 않습니다. 나는 이제 이것이 순수한 방귀라는 것을 압니다. MMX에서 AVX에 이르기까지 코드를 어떻게 작성하더라도 이러한 종류의 병렬 처리 기능을 작성할 수 없으며 어떤 컴파일러도 이를 수행할 수 없습니다. 이 강력한 기능을 사용하려면 어셈블리를 사용해야 합니다.
그리고 내 응용 프로그램은 그래픽의 일괄 처리가 가장 필요한 게임 엔진입니다.
예전에 어셈블리를 배웠을 때 성능이 중요한 곳에서는 여전히 어셈블리가 필요하다는 것을 책에서 방금 봤습니다. 참 단순한 작가의 느낌이군요. 사실 저는 어셈블리 언어가 이렇게 강력할 것이라고는 예상하지 못했습니다.
이것은 실제로 "적은 것이 더 많다"는 나의 현재 생각에서 이익을 얻습니다. 예전에는 게임만들 생각을 했기 때문에 크로스플랫폼, PC만들기, 휴대폰만들기 등을 늘 생각했었는데 이제는 직접 엔진을 만들다 보니 요구사항이 그렇게 높을 수가 없고 생각하고 싶지도 않네요. 크로스 플랫폼에 관해서는 PC 플랫폼을 좋게 만드는 데 집중합니다. 그래서 조립을 배워보자는 생각이 떠올랐어요. 크로스 플랫폼에 대해 항상 생각한다면 이런 생각이 들지 않을 수도 있습니다.
진이난 교수의 강의에서 나에게 깊은 인상을 준 문장이 있었다.
힘든 일을 하면 뭔가 얻을 것이다.
이것은 거의 내 인생의 신조 중 하나가 되었습니다. 이번에도 이 문장의 위력이 다시 한번 확인됩니다.
조립을 배우면서 생각했던 것보다 더 많은 이점을 얻었습니다. 이전 코드 중 일부를 수정하고 싶습니다. 예를 들어 DirectX의 DirectDraw가 알파 채널을 지원하지 않기 때문에 알파 블렌딩 코드를 사용하곤 했습니다. 그래서 반투명 개체를 지원하기 위해 나만의 알파 블렌딩을 작성했습니다. 원래는 800프레임이었는데, 순식간에 200프레임으로 줄어들 수 있습니다. 하지만 주인공의 항공기만이 이 알고리즘을 사용합니다. 어셈블리를 사용하면 훨씬 더 높아질 수 있다고 생각합니다. 물론 이는 이를 개선하려는 시도일 뿐입니다. 사실 가장 중요한 것은 하드웨어에 달려 있습니다. Blt만 사용하면 프레임 속도가 4000을 넘을 수 있습니다. 이는 어떤 변환 방법으로도 달성할 수 없습니다.
그러나 아직 개선할 수 있는 부분이 있습니다. 예를 들어 SpritePack 기능이 있습니다. 이것은 하드웨어로 제어할 수 없으며 모두 내 알고리즘으로 구현됩니다. 이러한 효율성 향상의 종합은 엄청난 가치를 제공할 수 있습니다.
사실 원래는 Python+머신러닝을 다시 배우고 싶었어요. 이 시간 동안 무슨 일이 일어나고 있는지 모르겠고, 모든 것을 알고 싶습니다. 나는 AI가 내 게임 개발에서 매우 중요한 퍼즐 조각이 될 것이라고 생각합니다. 이제 AI를 사용하여 이미지와 원본 그림을 만들 수 있는데 사용하기가 매우 쉽습니다. 나는 지식의 이러한 측면에 대해 더 배우고 싶습니다.
하지만 저는 이 기간 동안 책을 읽지 않고 튜토리얼만 공부했기 때문에 항상 앉아 있을 수가 없었습니다. 책으로 배우면 누워서 읽을 수도 있어서 '3D 게임 프로그래밍 마스터 스킬'을 배우기로 했어요. 이렇게 하면 허리에 가해지는 압력이 완화됩니다.
이 기간이 지나면 Python을 배울 수 있는지 확인하세요.
어서 해봐요!