На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ курсС: Π»Π΅Π³ΠΊΠΎ! (Π½Ρƒ ΠΏΠΎΡ‡Ρ‚ΠΈ)

ΠŸΡ€ΠΈΠ²Π΅Ρ‚! МСня Π·ΠΎΠ²ΡƒΡ‚ Π“Π»Π΅Π± ΠœΠ°Ρ€ΡŒΠΈΠ½, я ΡƒΡ‡ΡƒΡΡŒ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ курсС Π±Π°ΠΊΠ°Π»Π°Π²Ρ€ΠΈΠ°Ρ‚Π° Β«ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½Π°Ρ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°Β» Π² ΠŸΠΈΡ‚Π΅Ρ€ΡΠΊΠΎΠΉ Π’Ρ‹ΡˆΠΊΠ΅. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ сСмСстрС всС пСрвокурсники нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ Π‘++. ΠœΡ‹ с ΠΌΠΎΠΈΠΌΠΈ ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€Π°ΠΌΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ.

О Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас получаСтся, Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ.

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

ВсСго нас Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ‚Ρ€ΠΎΠ΅: я, АлСксСй Π›ΡƒΡ‡ΠΈΠ½ΠΈΠ½ ΠΈ Илья ΠžΠ½ΠΎΡ„Ρ€ΠΈΠΉΡ‡ΡƒΠΊ. Никто ΠΈΠ· нас Π½Π΅ являСтся экспСртом Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ³Ρ€, Π° Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π² создании ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… Π΄Π²ΠΈΠΆΠΊΠΎΠ². Для нас это ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ большой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚: Π΄ΠΎ Π½Π΅Π³ΠΎ ΠΌΡ‹ выполняли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ домашниС задания ΠΈ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΅Π΄Π²Π° Π»ΠΈ профСссионалы Π² области ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π½Π°ΠΉΠ΄ΡƒΡ‚ здСсь Π½ΠΎΠ²ΡƒΡŽ для сСбя ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π΄Ρ‹, Ссли наши ΠΈΠ΄Π΅ΠΈ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой Π΄Π²ΠΈΠΆΠΎΠΊ. Но Ρ‚Π΅ΠΌΠ° эта слоТна ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³Ρ€Π°Π½Π½Π°, ΠΈ ΡΡ‚Π°Ρ‚ΡŒΡ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС Π½Π΅ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π° ΠΏΠΎΠ»Π½ΠΎΡ‚Ρƒ спСциализированной Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹.

ВсСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ, ΠΊΠΎΠΌΡƒ интСрСсно ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ нашСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, β€” приятного чтСния!

Π“Ρ€Π°Ρ„ΠΈΠΊΠ°

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΌΡ‹ΡˆΡŒ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°

Для создания ΠΎΠΊΠΎΠ½, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π²ΠΎΠ΄Π° с ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ SDL2. Π­Ρ‚ΠΎ Π±Ρ‹Π» случайный Π²Ρ‹Π±ΠΎΡ€, Π½ΠΎ ΠΌΡ‹ ΠΎ Π½Π΅ΠΌ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠΆΠ°Π»Π΅Π»ΠΈ.

Π’Π°ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π° самом ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ Π½Π°Π΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ°Ρ€ΠΎΠΉ строчСк ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ, ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ с Π½ΠΈΠΌ манипуляции Π²Ρ€ΠΎΠ΄Π΅ пСрСмСщСния курсора ΠΈ Π²Ρ…ΠΎΠ΄Π° Π² полноэкранный Ρ€Π΅ΠΆΠΈΠΌ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ события: наТатия клавиш, пСрСмСщСния курсора. Π—Π°Π΄Π°Ρ‡Π° оказалось нСслоТной: ΠΌΡ‹ быстро сдСлали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΡƒΠΌΠ΅Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ, Π° ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ПКМ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Β«Hello, World!Β».

Π’ΡƒΡ‚ появился Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»:

Hello World

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

ΠšΠ°ΠΌΠ΅Ρ€Π°

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ, которая ΠΌΠΎΠ³Π»Π° Π±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Ρ€Π°Π·Π½Ρ‹Π΅ стороны. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ, Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈΡΡŒ знания ΠΈΠ· Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹. Если Π²Π°ΠΌ это Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ интСрСсно, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π», ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π³ΠΈΡ„ΠΊΡƒ ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ дальшС.

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°Ρ… экрана Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ, зная Π΅Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚.

НачнСм с получСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² базисС ΠΌΠΈΡ€Π°. Π‘ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ прСобразования: ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ. ВсС эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π΄ΠΎΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ исходного Π²Π΅ΠΊΡ‚ΠΎΡ€Π° (ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π² базисС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°) Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Π’ΠΎΠ³Π΄Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Model Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π½Π° экранС, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π½Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΏΡΡ‚ΡŒ Ρ€Π°Π·. ВсС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 4 Π½Π° 4, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ придСтся ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ довольно ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ умноТСния. ΠœΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ядра процСссора большим количСством простых Π·Π°Π΄Π°Ρ‡. Для этого Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π°, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ рСсурсы. Π—Π½Π°Ρ‡ΠΈΡ‚, Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€: Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ для Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹. Π’ OpenGL Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π½Ρ‹ΠΉ язык GLSL, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ Π½Π° C, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. НС Π±ΡƒΠ΄Π΅ΠΌ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности написания ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Π°, Π»ΡƒΡ‡ΡˆΠ΅ Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ посмотрим Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΡˆΠ»ΠΎ:

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

ПояснСниС: Π΅ΡΡ‚ΡŒ Π΄Π΅ΡΡΡ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π½Π° нСбольшой дистанции Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ. По ΠΏΡ€Π°Π²ΡƒΡŽ сторону ΠΎΡ‚ Π½ΠΈΡ… находится ΠΈΠ³Ρ€ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ.

Π€ΠΈΠ·ΠΈΠΊΠ°

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

Π”ΠΎ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΡ‹ Π΄ΡƒΠΌΠ°Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ Π² Π΄Π²ΠΈΠΆΠΊΠ΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΉ, Π° для освСщСния, Ссли Ρ€Π΅ΡˆΠΈΠΌ Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ raycasting. Но Ρƒ нас ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ Π±Ρ‹Π»Π° Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΊΠ°ΠΌΠ΅Ρ€Π°, которая ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²ΠΎ всСх Ρ‚Ρ€Π΅Ρ… измСрСниях. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ всСм Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ β€” ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ ΠΈ Π½Π΅Ρ‚? К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π² пСрспСктивС это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ довольно красивоС освСщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π΅Π½ΠΈ ΠΎΡ‚ толстых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠžΡΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ появилось ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π΅Π»ΠΎΠΌ. Для Π΅Π³ΠΎ создания ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ инструкции для рисования ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ пиксСля β€” Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€.

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

ВСкстуры

Для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΡ‹ использовали Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ DevIL. ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ GraphicalObject2d стал ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ экзСмпляр класса GraphicalPolygon β€” лицСвая Ρ‡Π°ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° β€” ΠΈ GraphicalEdge β€” боковая Ρ‡Π°ΡΡ‚ΡŒ. На ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‚ΡΠ½ΡƒΡ‚ΡŒ свою тСкстуру. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

ВсС основноС, Ρ‡Ρ‚ΠΎ трСбуСтся ΠΎΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²ΠΎ: отрисовка, ΠΎΠ΄ΠΈΠ½ источник освСщСния ΠΈ тСкстуры. Π“Ρ€Π°Ρ„ΠΈΠΊΠ° β€” Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС всС.

Машина состояний, Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ‹ ΠΎΠ½ Π½ΠΈ Π±Ρ‹Π», β€” состояниСм Π² машинС состояний, графичСским ΠΈΠ»ΠΈ ΠΆΠ΅ физичСским β€” Π΄ΠΎΠ»ΠΆΠ΅Π½ Β«Ρ‚ΠΈΠΊΠ°Ρ‚ΡŒΒ», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΏΠ°ΡƒΠ·Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, систСму частиц ΠΈ частицы Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π΅. Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ состоянии для этого Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ onPause для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π£ состояния Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ стадии: ΠΎΠ½ΠΎ Π½Π°Ρ‡Π°Π»ΠΎΡΡŒ, ΠΎΠ½ΠΎ Ρ‚ΠΈΠΊΠ°Π΅Ρ‚, ΠΎΠ½ΠΎ остановлСно. К ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· стадий ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ дСйствия, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ тСкстуру, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

БохранСния

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ сохранСниС, остаСтся просто ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ dump() для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° β€” это конструктор ΠΎΡ‚ строки, содСрТащСй всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°, ΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΎΠΉ конструктор сдСлан для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

На самом Π΄Π΅Π»Π΅, ΠΈΠ³Ρ€Π° ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ β€” это ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ класс, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΈΠ³Ρ€Π΅ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ загруТаСтся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ чтСния, Π° Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ β€” Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ записи. Для записи ΠΈ чтСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· json-Π° Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ rapidjson.

ГрафичСский интСрфСйс

Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ встал вопрос: ΠΏΡƒΡΡ‚ΡŒ ΡƒΠΆΠ΅ написана Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, машина состояний ΠΈ всС ΠΏΡ€ΠΎΡ‡Π΅Π΅. Как ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ смоТСт Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ это?

Π’ графичСском интСрфСйсС количСство дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ произвСсти с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ: ΠΏΠ΅Ρ€Π΅Π»ΠΈΡΡ‚Π½ΡƒΡ‚ΡŒ слайд Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ силу, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π° ΠΆΠ΅ ситуация с ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°ΠΌΠΈ Π² машинС состояний. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄Π²ΠΈΠΆΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ количСства дСйствий Ρ€Π΅ΡˆΠ°ΡŽΡ‚ связываниСм Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Unity ΠΈ Godot ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ связываниС с C#. Π£ΠΆΠ΅ ΠΈΠ· этого скрипта ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ: ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ созвСздии Π£Ρ€Π°Π½, ΠΈ ΠΊΠ°ΠΊΠΎΠΉ сСйчас курс Π΅Π²Ρ€ΠΎ. Π£ нас Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅Ρ‚, Π½ΠΎ Π² наши ΠΏΠ»Π°Π½Ρ‹ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ с Python 3.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ графичСского интСрфСйса ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Dear ImGui, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ малСнькая (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстным Qt) ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΉ ΠΎΡ‡Π΅Π½ΡŒ просто. ImGui β€” ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° создания графичСского интСрфСйса. Π’ Π½Π΅ΠΉ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° всС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΈ ΠΎΠΊΠ½Π° ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли это Π½ΡƒΠΆΠ½ΠΎ. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, это ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ объСм потрСбляСмой памяти, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ, скорСС всСго, Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ слоТной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создания ΠΈ сохранСниС Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ рисования. Π’ΡƒΡ‚ ΡƒΠΆΠ΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйсы для создания ΠΈ рСдактирования.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΡΡ‚Π°Ρ‚ΡŒΠΈ выглядит графичСский интСрфСйс:

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ состояний

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠœΡ‹ создали Ρ‚ΠΎΠ»ΡŒΠΊΠΎ основу, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅ΡˆΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ интСрСсноС. Π˜Π½Ρ‹ΠΌΠΈ словами, Π΅ΡΡ‚ΡŒ ΠΊΡƒΠ΄Π° расти: ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ отрисовку Ρ‚Π΅Π½Π΅ΠΉ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ источника освСщСния, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ Python 3, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипты для ΠΈΠ³Ρ€Ρ‹. Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ интСрфСйс: ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ красивСС, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ большС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ горячих ΠΊΠ»Π°Π²ΠΈΡˆβ€¦

Π Π°Π±ΠΎΡ‚Ρ‹ Π΅Ρ‰Π΅ прСдстоит ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΌΡ‹ Π΄ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅ΠΌ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

Π—Π° врСмя создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π°: Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, создания графичСских интСрфСйсов, Ρ€Π°Π±ΠΎΡ‚Ρ‹ с json Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ многочислСнных C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. А Π΅Ρ‰Π΅ ΠΎΠΏΡ‹Ρ‚ написания ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ большого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅. НадССмся, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Π½Π΅ΠΌ Ρ‚Π°ΠΊ ΠΆΠ΅ интСрСсно, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ интСрСсно ΠΈΠΌ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ πŸ™‚

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как я писал кросплатформСнный 3d ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ

Π§Ρ‚ΠΎ мСня ΠΏΠΎΠ±ΡƒΠ΄ΠΈΠ»ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

ΠΠ°Ρ‡Π°Π»Π°ΡΡŒ история довольно Π΄Π°Π²Π½ΠΎ ΠΈ с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΡƒ Β«PusherΒ» Π½Π° Vista 64. Однако ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΈΠ³Ρ€Π° Π±Ρ‹Π»Π° 16 Π±ΠΈΡ‚Π½ΠΎΠΉ ΠΈ Π½Π°ΠΏΡ€ΠΎΡ‡ΡŒ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Π»Π°ΡΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ. НичСго Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Π‘ΠΈ Π΅Ρ‘ ΠΊΠ»ΠΎΠ½, я Π½Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» (ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ). Бпустя нСбольшоС врСмя я Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» ΠΈΠ³Ρ€Ρƒ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ SDL v1.2 + OpenGL.

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

Для удобства пСрСноса ΠΊΠ°Ρ€Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π» всС 64 ΠΊΠ°Ρ€Ρ‚Ρ‹. Π§Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя интСрСс ΠΊ Β«PusherΒ» ослаб, ΠΈ ΠΌΠ½Π΅ ΡƒΠΆΠ΅ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΏΠΎΠ³ΠΎΠ½ΡΡ‚ΡŒ Π² Tomb raider 1 с 3dfx Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ. И ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡƒΠΆΠ΅ догадались, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ мСня Π½Π΅ особо ΠΏΠΎΡ€Π°Π΄ΠΎΠ²Π°Π»ΠΈ (скорСС Π΄Π°ΠΆΠ΅ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ) ΠΈ я занялся поиском ΠΏΠΎΡ€Ρ‚ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ извСстного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Open raider я Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ нашСл. Π”ΠΎ сих ΠΏΠΎΡ€ помню ΠΊΠ°ΠΊ мучился с Π΅Π³ΠΎ сборкой ΠΏΠΎΠ΄ windows с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ компилятора mingw (срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π΅ помню, Π»ΠΈΠ±ΠΎ code::blocks, Π»ΠΈΠ±ΠΎ netbeans). Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сборки мСня совсСм Π½Π΅ ΠΏΠΎΡ€Π°Π΄ΠΎΠ²Π°Π»: Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° уровня ΠΎΠΊΠΎΠ»ΠΎ ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ ΠΈ Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ экран Π² ΠΈΡ‚ΠΎΠ³Π΅. УмСния ΠΊΠΎΠ²Ρ‹Ρ€ΡΡ‚ΡŒ Ρ‡ΡƒΠΆΠΎΠΉ ΠΊΠΎΠ΄, ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΅Π³ΠΎ структуру ΠΈ смысл Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρƒ мСня Π½Π΅ Π±Ρ‹Π»ΠΎ. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Β«Π»ΡƒΡ‡ΡˆΠ΅Β» ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ. Однако я загорСлся ΠΈΠ΄Π΅Π΅ΠΉ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Π΄Π²ΠΈΠΆΠΊΠΎΠ² Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π½Π΅ Π°Π²Ρ‚ΠΎΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠΌ Die GNU Autotools, Π° с ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ собранного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½ΠΈΠΊΠ° Π² срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, послС ΠΊΡƒΡ‡ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΎΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ количСства ΠΌΠ°Ρ‚Π° ΠΈ Ρ‚.Π΄., я собрал Quake Tenebrae Π±Π΅Π· Π·Π²ΡƒΠΊΠ°. Π—Π°Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π»! Π­Ρ‚ΠΎ Π±Ρ‹Π»Π° малСнькая ΠΏΠΎΠ±Π΅Π΄Π°, которая принСсла ΠΏΠ»ΠΎΠ΄Ρ‹: я стал Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Ρ‡ΡƒΠΆΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ стал Ρ…ΠΎΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ компилятора – Π±Π΅Π· Ρ‡Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΠΊΠ°ΠΊ нСльзя. ПослС Π±Ρ‹Π»ΠΎ сдСлано нСсколько ΠΌΠ΅Π»ΠΊΠΈΡ… Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ, устранСны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π°Π³ΠΈ ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π·Π²ΡƒΠΊ, Π½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π±Ρ‹Π» Π·Π°Π»ΠΈΡ‚ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ (Π΄Π°ΠΆΠ΅ Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ Π±Ρ‹Π» ΠΌΠΎΡ€Π°Π»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ, особСнно с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ наличия Dark places engine). Однако ΠΈΠ· ΠΊΠΎΠ΄Π° Π΄Π²ΠΈΠΆΠΊΠ° Quake Tenebrae я ΡƒΠ·Π½Π°Π» ΠΊΠ°ΠΊ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΈΠ³Ρ€Ρ‹ Π² Ρ†Π΅Π»ΠΎΠΌ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΅Ρ‘ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° памяти (я Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² Π½Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ realloc, ΠΏΡƒΡΡ‚ΡŒ довольно ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ, Π½ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π±Π΅Π· Π²Ρ‹Π»Π΅Ρ‚ΠΎΠ²).

ПишСм двиТок

Когда я Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ освоился, Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΠ» Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ свой Π΄Π²ΠΈΠΆΠΎΠΊ с нуля. ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ€Π°Π΄ΠΈ интСрСса ΠΈ саморазвития. Π‘Π°Π·ΠΎΠΉ для создания Π΄Π²ΠΈΠΆΠΊΠ° слуТило ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: компилятор GCC-TDM v4.Π₯.Π₯ + msys ΠΈ срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Netbeans; Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: SDL v1.2 + OpenGL. ΠŸΠ΅Ρ€Π²Π°Ρ рСализованная функция Π±Ρ‹Π»Π° созданиСм ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π° ΠΈ Π΅Π³ΠΎ сохранСниСм Π² Ρ„Π°ΠΉΠ» *.bmp с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ самописной Π±ΠΈΠ±Π»ΠΈΡ‚Π΅Ρ‡ΠΊΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этим Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ. Какой Π΄Π²ΠΈΠΆΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· консоли для Π²Π²ΠΎΠ΄Π° Ρ‡ΠΈΡ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° тСкста – Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ, поэтому ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π΄Π΅Π»ΠΎΠΌ я ΠΈΠ·ΡƒΡ‡ΠΈΠ» вопрос ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ тСкст Π² ΠΎΠΊΠ½ΠΎ OpenGL ΠΈ Π²Ρ‹Π±Ρ€Π°Π» связку freetype 1 + gltt. ΠŸΠ΅Ρ€Π²ΠΎΠΉ распознаваСмой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π±Ρ‹Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° exit ΠΈ ΡƒΠΆΠ΅ послС – ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΈΠ³Ρ€Ρ‹ с Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ², строк ΠΈ Ρ‚.д…. Для справки: ΠΌΠ½Π΅ понравился ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² Quake I для парсинга строк ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΅Π³ΠΎ разбития Π½Π° Ρ‚ΠΎΠΊΠ΅Π½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎ сих ΠΏΠΎΡ€ присутствуСт Π² Π΄Π²ΠΈΠΆΠΊΠ΅:

ЗабСгая Π²ΠΏΠ΅Ρ€Π΅Π΄: ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° скриптов я Ρ€Π΅ΡˆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π²ΠΈΠΆΠΊΠ° ΠΊΠ°ΠΊ Π² Β«ID softwareΒ» Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Β«DOOM 3 engineΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ описан здСсь, Π½Π° Π₯Π°Π±Ρ€Π΅ =) (хочСтся Π΅Ρ‰Π΅ Ρ€Π°Π· ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ спасибо Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ Π·Π° ΡΡ‚Π°Ρ‚ΡŒΡŽ, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈ написавшим интСрСсныС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ Π½Π΅ΠΉ людям). Под Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡ‚Π°Ρ‚ΡŒΠΈ я Ρ€Π΅ΡˆΠΈΠ» Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π² свой Π΄Π²ΠΈΠΆΠΎΠΊ LUA Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Π½ΡƒΡ‚Ρ€ΠΈΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… скриптовых Π½ΡƒΠΆΠ΄, Π½ΠΎ Π΅Ρ‰Π΅ для парсинга ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ (Ρ‚.Π΅. Π²Π΅Π·Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Сдинообразная систСма). ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠΏΡ€Π°Π²Π΄Π°Π» сСбя Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ 3d

МнС ΠΏΠΎΠ²Π΅Π·Π»ΠΎ, Ρ‡Ρ‚ΠΎ Π² институтС ΠΌΠ½Π΅ Π½Ρ€Π°Π²ΠΈΠ»ΠΈΡΡŒ линСйная Π°Π»Π³Π΅Π±Ρ€Π°, ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Π΅ прСобразования, Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈ числСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π‘Π΅Π· этих основ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π΄Π²ΠΈΠΆΠΊΠ° с нуля ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠΏΡ€ΠΎΠΌΠ΅Ρ‚Ρ‡ΠΈΠ²ΠΎ (Ρ€Π°Π·Π²Π΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ эти Ρ€Π°Π·Π΄Π΅Π»Ρ‹ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, ΠΎΠ΄Π½Π°ΠΊΠΎ Π±Π΅Π· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ тСорСтичСской Π±Π°Π·Ρ‹ Π·Π½Π°Π½ΠΈΠΉ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°Π»ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ). Π’ освоСнии Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΌΠ½Π΅ сильно ΠΏΠΎΠΌΠΎΠ³Π»Π° ΠΊΠ½ΠΈΠ³Π° А. БорСскова Β«Π“Ρ€Π°Ρ„ΠΈΠΊΠ° Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹ Π½Π° основС OPENGLΒ». ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Π°Π» Π΅Π΅ Π½Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· (для ознакомлСния с матСматичСским Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ΠΎΠΌ, Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Ρ€ΠΎΠ² ΠΈ структурой Π΄Π²ΠΈΠΆΠΊΠΎΠ²). Π‘Π΅Π· понятия ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ построСния сцСны ΠΈ прСдназначСния Π²ΠΈΠ΄ΠΎΠ²ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒΡΡ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ удастся. ПослС изучСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΠΈ просто Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹, я Ρ€Π΅ΡˆΠΈΠ» Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Ρ€. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² Π΄Π²ΠΈΠΆΠΊΠ΅ – это свободно Π»Π΅Ρ‚Π°ΡŽΡ‰Π°Ρ ΠΊΠ°ΠΌΠ΅Ρ€Π° ΠΈ нСсколько ΠΏΠΎΡ€Ρ‚Π°Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Ρ€ΡƒΠ³ Ρ‡Π΅Ρ€Π΅Π· Π΄Ρ€ΡƒΠ³Π°.

ПослС Ρ…Π°Ρ€Π΄ΠΊΠΎΠ΄ΠΎΠΌ Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° wireframe сцСна ΠΈΠ· 3-Ρ… ΠΊΠΎΠΌΠ½Π°Ρ‚ (Π΄Π²Π΅ побольшС ΠΈ ΠΊΠΎΡ€ΠΈΠ΄ΠΎΡ€). Но Ρ€Π°Π·Π²Π΅ интСрСсно Π»Π΅Ρ‚Π°Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠΌ мирС… И Ρ‚ΡƒΡ‚ я Ρ€Π΅ΡˆΠΈΠ» Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠΌ рСсурсов ΠΈΠ· Open raider ΠΈ ΠΏΠΎΡ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π½ΠΈ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ мСня ΠΏΠΎΡ€Π°Π΄ΠΎΠ²Π°Π» ΠΈ Ρ‚ΡƒΡ‚ ΡƒΠΆΠ΅ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ замысСл ΠΏΠΎ созданию ΠΏΠΎΡ€Ρ‚Π° для ΠΈΠ³Ρ€Ρ‹ Π² Tomb raider, хотя Π±Ρ‹ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π΅Ρ‘ Ρ‡Π°ΡΡ‚ΡŒ. Для позиционирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² пространствС я использовал ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ OpenGL Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это позволяСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌ локальной систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ glMultMatrixf(transform) ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² физичСском Π΄Π²ΠΈΠΆΠΊΠ΅ bullet ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ setFromOpenGLMatrix(transform), ΠΎ Ρ‡Π΅ΠΌ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ со структурой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ OpenGL с Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ссылки:

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

Для вСдСния истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π΄Π²ΠΈΠΆΠΊΠ΅ ΠΈ возмоТности бэкапа ΠΈ просто для саморазвития Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ систСму контроля вСрсий mercurial. Π•Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ прогрСсс Π² написании ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΈ Π΄Π°Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π° sourceforge.com. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Π² Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π°Ρ‡Π°Π»Π° Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ информация ΠΎ ΠΏΠΎΡ€Ρ‚Π°Π»Π°Ρ… с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚, сразу всплыло ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Π½Π΅Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠ΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΡ€Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ систСмы. На Π±ΠΎΡ€ΡŒΠ±Ρƒ с ΠΏΡ€ΠΎΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ Π²Ρ‹Π»Π΅Ρ‚Π°ΠΌΠΈ ΡƒΡˆΠ»ΠΎ Π½Π΅ΠΌΠ°Π»ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ Π΄Π°ΠΆΠ΅ сСйчас я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ€Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ нуТдаСтся Π² ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎΠΉ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ΅. БСйчас Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Ρ€ Π΄Π²ΠΈΠΆΠΊΠ° Π² зависимости ΠΎΡ‚ полоТСния ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹ ΠΈ Π΅Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΡ€Ρ‚Π°Π»Π°ΠΌ ΠΊΠΎΠΌΠ½Π°Ρ‚ ΠΈ добавляСт Π² список Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹. ΠŸΠΎΡ‚ΠΎΠΌ Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Ρ€ рисуСт ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹ ΠΈ ΠΈΡ… содСрТимоС ΠΈΠ· списка. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… пространств Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ самый ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ для Ρ†Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅Π³ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ достаточно. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΏΠΎ ΠΊΠΎΠΌΠ½Π°Ρ‚Π°ΠΌ:

Π‘ΠΊΠ΅Π»Π΅Ρ‚Π½Ρ‹Π΅ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ

И Π²ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ ΠΎΠ΄Π½Π° ΠΈΠ· самых ΠΊΡ€ΠΎΠΏΠΎΡ‚Π»ΠΈΠ²Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Π Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ статичныС ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹ со статичными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ оказалось ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСслоТно, Π½ΠΎ Π²ΠΎΡ‚ ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ дошло Π΄ΠΎ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… скСлСтных модСлСй… ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Ρ‡Ρ‚ΠΎ я понял: Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ рСсурсов Open raider Π½Π΅ Π³Ρ€ΡƒΠ·ΠΈΡ‚ всю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ скСлСтной ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² Π² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ опрСдСляСтся Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ ΠΎΠ΄Π½Π° анимация содСрТит Π² сСбС Ρ„Ρ€Π΅ΠΉΠΌΡ‹ сразу ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ….
Π’ Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ я нашСл Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ Tomb raider ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ vt, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π» свой Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ рСсурсов. ΠŸΡƒΡΡ‚ΡŒ Π² этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠ°Π΄Ρ€ΠΎΠ² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π·Π°Ρ‚ΠΎ Π² Π½Π΅ΠΌ Π±Ρ‹Π» Π±ΠΎΠ»Π΅Π΅ структурированный ΠΊΠΎΠ΄, ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для чтСния ΠΈ довСдСния Π΄ΠΎ ΡƒΠΌΠ°. Π’Π°ΠΊ я Π·Π°ΠΌΠ΅Π½ΠΈΠ» Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π½Π° vt. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°: Π² Open raider всС 5 частСй Tomb raider грузятся ΠΎΠ΄Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ с ΠΊΡƒΡ‡Π΅ΠΉ if ΠΈ switch ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ вСрсии ΠΈΠ³Ρ€Ρ‹, Ρ‡Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ услоТняло Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ поиск ошибок. Π’ vt Π±Ρ‹Π»ΠΎ 5 ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‡Π°Π» Π·Π° свою Π²Π΅Ρ€ΡΠΈΡŽ уровня, благодаря Ρ‡Π΅ΠΌΡƒ ΠΊΠΎΠ΄ читался достаточно Π»Π΅Π³ΠΊΠΎ, ΠΈ внСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π΅ прСдставляло трудностСй.

Π“Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ с анимациями оказалось ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠ³Π»ΠΎΠ² ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ΠΎΠ² костСй Π² скСлСтной ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для экономии мСста ΡƒΠ³Π»Ρ‹ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡΡŒ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π΅ с шагом Π² 2-4 Π±Π°ΠΉΡ‚Π°. Π’ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 2 Π±Π°ΠΉΡ‚Π° Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ„Π»Π°Π³ ΠΎ Ρ‚ΠΎΠΌ ΠΎΠ΄ΠΈΠ½ Π»ΠΈ здСсь ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ ΠΈ Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΊΠ°ΠΊΠΎΠΉ оси, ΠΈΠ»ΠΈ сразу Ρ‚Ρ€ΠΈ ΠΈ сами ΡƒΠ³Π»Ρ‹. Π’ случаС 3-Ρ… ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ΠΎΠ² Ρ„Π»Π°Π³ΠΈ ΠΈ ΡƒΠ³Π»Ρ‹ хранятся Π² 4-Ρ… Π±Π°ΠΉΡ‚Π°Ρ…, Π² случаС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2 Π±Π°ΠΉΡ‚Π°. ΠŸΡ€ΠΈ этом ΡƒΠ³Π»Ρ‹ для всСх ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ ΠΈ ΠΊΠ°Π΄Ρ€ΠΎΠ² хранятся Π² ΠΎΠ΄Π½ΠΎΠΌ массивС ΠΈ смСщСния Π½Π°Π΄ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π² этом Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π΅ Π΅Ρ‰Π΅ хранятся Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° со смСщСниями ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π°, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ количСство Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² грузится Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ (Π² послСдствии оказалось, Ρ‡Ρ‚ΠΎ количСство Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² Π΄Π°Π½ΠΎ для Β«ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ…Β» Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ с частотой 30 fps, Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ, ΠΊΠ°Π΄Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ хранятся Π² Β«ΡƒΠΆΠ°Ρ‚ΠΎΠΌΒ» Π²ΠΈΠ΄Π΅ с fps со мноТитСлями 1, 1/2, 1/3 ΠΈ 1/4). ПослС допиливания Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ, скСлСтныС модСльки пСрСстали Π²Ρ‹Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π°ΠΈΠ·Π½Π°Π½ΠΊΡƒ ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π² ΠΊΠ°ΡˆΡƒ ΠΈΠ· искаТСнных ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ²! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π΄ΠΎ Β«ΠΎΠΆΠΈΠ²ΠΈΡ‚ΡŒΒ» Π›Π°Ρ€Ρƒ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΡΠΊΠ΅Π»Π΅Ρ‚Π½ΡƒΡŽ модСль, сохранСна орфография ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹Π΅ участки ΠΊΠΎΠ΄Π° для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ:

Π’Ρ‹Ρ…ΠΎΠ΄ Π² свСт

Когда скСлСтныС ΠΌΠΎΠ΄Π΅Π»ΠΈ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ, ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΈΡ… расстановкС ΠΏΠΎ ΡƒΡ€ΠΎΠ²Π½ΡŽ ΠΈ Β«ΠΎΠΆΠΈΠ²Π»ΡΡ‚ΡŒΒ» Π›Π°Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ наличия Ρ„ΠΈΠ·ΠΈΠΊΠΈ. Для Π½Π°Ρ‡Π°Π»Π° Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ свой физичСский Π΄Π²ΠΈΠΆΠΎΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ‚Π΅ΠΌΠΎΠΉ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ ΠΊ Π²Ρ‹Π±ΠΎΡ€Ρƒ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Ρ‡Ρ‚ΠΎ трСбуСтся для создания ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° пСрсонаТа – это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ высот. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»Π° написана (Π½Π° основС барицСнтричСского Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°) функция опрСдСлСния пСрСсСчСния Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΈ Π»ΡƒΡ‡Π°. ПослС Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ пСрСсСчСния двиТущихся ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠ², Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΈ сфСры, Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΈ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ появлСния Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Β«Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ эффСкта» (ΠΊΠΎΠ³Π΄Π° ΠΈΠ·-Π·Π° большой скорости ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с большими скоростями ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠ»Π΅Ρ‚Π΅Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ сквозь Π΄Ρ€ΡƒΠ³Π° Π±Π΅Π· столкновСния), присущСго impulse based физичСским Π΄Π²ΠΈΠΆΠΊΠ°ΠΌ.

И Π²ΠΎΡ‚ Π›Π°Ρ€Π° Π±Π΅Π³Π°Π΅Ρ‚ ΠΏΠΎ уровням, ΠΏΡƒΡΡ‚ΡŒ ΠΈ минуя всС ступСни Π»ΡŽΠ±Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², Π·Π°Ρ‚ΠΎ Π½Π΅ вываливаСтся Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΊΠ°Ρ€Ρ‚Ρ‹! Когда ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» Π² Ρ‚Π°ΠΊΠΎΠΌ состоянии ΠΌΠ½Π΅ написал Анатолий Lwmte ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΡƒΡ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΡŒ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ интСрСсны ΠΏΠ΅Ρ€Π²Ρ‹Π΅ части Tomb raider. Π’Π°ΠΊ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ пСрСписка, благодаря ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Π½Π°Ρ‡Π°Π» Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ интСрСс. ПослС я зарСгистрировался Π½Π° tombraiderforums.com (Анатолий Π±Ρ‹Π» Ρ‚Π°ΠΌ ΡƒΠΆΠ΅ достаточно Π΄ΠΎΠ»Π³ΠΎ, со своим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ΠΏΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ Π΄Π²ΠΈΠΆΠΊΠ° Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ части Tomb raider). Благодаря Π½Π΅ΠΌΡƒ Π½Π° этом Ρ„ΠΎΡ€ΡƒΠΌΠ΅ появилась Ρ‚Π΅ΠΌΠ° с ΠΌΠΎΠΈΠΌ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΎΠΊ Π² ΠΊΠΎΠ΄Π΅: ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Π·Π²ΡƒΠΊΠ°, ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»ΠΊΠ° систСмы контроля состояний (Π΄ΠΎ этого Ρƒ мСня Π±Ρ‹Π» switch ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ состояний) ΠΈ Ρ‚.Π΄. НаличиС заинтСрСсованных Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ людСй Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π€ΠΈΠ·ΠΈΠΊΠ° + оптимизация Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Ρ€Π°

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я использовал свою Ρ„ΠΈΠ·ΠΈΠΊΡƒ, Π΄Π° Π΅Ρ‰Π΅ ΠΈ с ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мСстах стало ΠΏΡ€ΠΎΡΠ΅Π΄Π°Ρ‚ΡŒ fps. ΠŸΡƒΡ‚Π΅ΠΌ Π΄ΠΎΠ»Π³ΠΈΡ… ковыряний Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… физичСских Π΄Π²ΠΈΠΆΠΊΠΎΠ² с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ bullet. ΠŸΠ΅Ρ€Π²ΠΎΠΉ Π΄Π΅Π»ΠΎΠΌ я Π΄ΠΎΠ±Π°Π²ΠΈΠ» Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Π½Π° столкновСния Π² случаС ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΊΠΎΠΌΠ½Π°Ρ‚. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ допускаСт пСрСсСчСниС 2-Ρ… ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ½Π°Ρ‚ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, ΠΏΡ€ΠΈ этом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹ Π½ΠΈ ΠΊΠ°ΠΊ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΎΠΉ; Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΈ с отрисовкой. Π’ настоящСС врСмя я ΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ довСсти Π΄ΠΎ ΡƒΠΌΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ пСрсонаТа: ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° сквозь стСны (происходит Π² рядС Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ Π² ΡƒΠΏΠΎΡ€ ΠΊ стСнС) ΠΈ Π΄ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ пСрсонаТа Π² случаС ΠΊΠ»ΠΈΠΌΠ±ΠΈΠ½Π³Π° ΠΏΠΎ стСнам ΠΈ ΠΏΠΎΡ‚ΠΎΠ»ΠΊΡƒ.

ВСрнСмся ΠΊ OpenGL. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π² Π΄Π²ΠΈΠΆΠΊΠ΅ отрисовка ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² вСлась с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ glVertex3fv(. ) ΠΈ Ρ‚.Π΄.; ΠŸΡ€ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π²ΠΈΠΆΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ: ΠΈΡ… Π½Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ послС изучСния части, ΠΊΠ°ΡΠ°ΡŽΡ‰Π΅ΠΉΡΡ VBO (Vertex Buffer Object), я сдСлал ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ стал ΠΏΠΎ возмоТности Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΏΠΎΠ»ΠΈΠ³ΠΎΠ½ΠΎΠ² Π² Π²ΠΈΠ΄Π΅ΠΎ памяти ΠΈ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ мСш ΠΎΠ΄Π½ΠΈΠΌ Π·Π°Ρ…ΠΎΠ΄ΠΎΠΌ. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ возросла. Однако ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ мСша тСкстуры ΠΌΠΎΠ³Π»ΠΈ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… массивах пиксСлСй, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ OpenGL тСкстур Π±Ρ‹Π»ΠΎ Ρ‡Π°Ρ‰Π΅ Ρ‡Π΅ΠΌ Π½Π°Π΄ΠΎ, Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ тСкстуры ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ массивС пиксСлСй, создавало Β«Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹Β» ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ сглаТивании. Cochrane с tombraiderforums.com взялся Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Ρ€Π° ΠΈ написал тСкстурный атлас с Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ тСкстурами. Благодаря этому нововвСдСнию всС тСкстуры уровня хранятся Π² 1 – 2 OpenGL тСкстурах ΠΈ сглаТиваниС Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ появлСнию Β«Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ²Β». К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΠ½ сдСлал ΠΏΠΎΡ€Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° MacOS.

Когда совсСм Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΈΠ΄Π΅ΠΉ Π·Π° Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ Π±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π΄Π²ΠΈΠΆΠΊΠ΅, я просто искал ошибки Π² ΠΊΠΎΠ΄Π΅, подправлял Π΅Π³ΠΎ структуру ΠΈΠ»ΠΈ мСнял ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ «пСрСсСлСниС» с SDL1 Π½Π° SDL2, с freetype1 + gltt ΠΊ freetype2 + ftgl. Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»Π° идСя Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сглаТиваниС анимациям с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сфСричСской интСрполяции slerp. Π—Π΄Π΅ΡΡŒ я Ρ…ΠΎΡ‡Ρƒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ: Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΊ матСматичСским Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ, особСнно ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ касаСтся Β«Π°Ρ€ΠΎΠΊΒ» (asin, acos, atan…) – потСря Π·Π½Π°ΠΊΠ° Ρ‡Ρ€Π΅Π²Π°Ρ‚Π° ΡƒΠ±ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π΄Ρ€Π°ΠΌΠΈ с ΠΏΠ΅Ρ€Π΅ΠΊΠΎΡˆΠ΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΡ€ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ скСлСтом. Π‘ΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ slerp Π² исходном ΠΊΠΎΠ΄Π΅ bullet. ПослС добавлСния сглаТивания, я ΡƒΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ³ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° нСсглаТСнныС Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Π”Π°Π»Π΅Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚ΡŒ Π·Π²ΡƒΠΊ, Π° Ρ‚ΠΎ Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΠΎ уровням Π² Π³Ρ€ΠΎΠ±ΠΎΠ²ΠΎΠΉ Ρ‚ΠΈΡˆΠΈΠ½Π΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ-Ρ‚ΠΎ, Ρ…ΠΎΡ‚ΡŒ ΠΈ Tomb raider.

ДобавляСм Π·Π²ΡƒΠΊ

Для использования Π·Π²ΡƒΠΊΠ° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ SDLAudio + SDLMixer ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ нСдостаточно, Π° Π»Π΅Π·Ρ‚ΡŒ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ прСобразования Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ вСлосипСды для создания эффСктов – совсСм плохая идСя. ΠŸΠΎΡΠΎΠ²Π΅Ρ‚ΠΎΠ²Π°Π²ΡˆΠΈΡΡŒ с АнатолиСм Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ OpenAL. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я руководствовался Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎ-зависимого ΠΊΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° SDL, Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ написания SDL_backend для OpenAL я Π½Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π». Однако ΠΎΠ½ΠΎ сработало, я Π΄ΠΎΠ±Π°Π²ΠΈΠ» инструмСнт Π² Π΄Π²ΠΈΠΆΠΎΠΊ, Π° Анатолий заставил всС ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ, Π³Π΄Π΅ Π½Π°Π΄ΠΎ ΠΈ Π΅Ρ‰Π΅ с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ эффСктами.

И Π²ΠΎΡ‚ подошла ΠΏΠΎΡ€Π° ΠΎΠΆΠΈΠ²Π»ΡΡ‚ΡŒ всСвозмоТныС Ρ€Ρ‹Ρ‡Π°Π³ΠΈ, Π»ΠΎΠ²ΡƒΡˆΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. ЀактичСски здСсь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° шла ΠΏΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅: ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ для этого Π½ΡƒΠΆΠ½Ρ‹ инструмСнты, ΠΊΠ°ΠΊ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Основная функция, примСняСмая для Ρ€Π°Π±ΠΎΡ‚Ρ‹ скриптов – это ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ указатСля Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎ числовому id, дальшС любая LUA функция смоТСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Для динамичСского добавлСния ΠΈ удалСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ возмоТности быстрого доступа ΠΊ Π½ΠΈΠΌ ΠΏΠΎ id я ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ» красно-Ρ‡Π΅Ρ€Π½Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ. По ΠΈΠ΄Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ…ΡΡˆ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π½ΠΎ Ρ‚ΡƒΡ‚ скорСС ΡƒΠΆΠ΅ сработали Π»ΠΈΡ‡Π½Ρ‹Π΅ прСдпочтСния.
Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΡƒΠΆΠ΅ сСйчас скриптовая систСма позволяСт ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ практичСскиС Π»ΡŽΠ±Ρ‹Π΅ манипуляции с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ анимациями, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ (ΠΈ Π½Π° ΠΈΡ… основС Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹), ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹, Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Ρ‹Ρ‡Π°Π½ΠΈΠΈ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ, открывая ΠΈ закрывая Ρ‚Π΅ΠΌ самым Π΄Π²Π΅Ρ€ΠΈ ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ. Благодаря стараниям людСй ΠΈΠ· сообщСства tombraiderforums.com Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ gameflow_manager, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ уровня Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½ΡƒΠΆΠ½Ρ‹Ρ… скриптов ΠΈ экранных заставок, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± источниках свСта ΠΈ рСализация ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ lightmap Π½Π° основС ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ² Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈ cmake скрипт для сборки ΠΏΠΎΠ΄ OS Lunux.

ПослСсловиС

Π’ ΠΊΠΎΠ½Ρ†Π΅ хочСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΡˆΡŒ сторонниС рСсурсы, Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ с тСстами ΠΈ Π½Π΅ Π½Π°Π΄ΠΎ Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ созданиСм ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ это Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ограничСния Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π΄Π²ΠΈΠΆΠΊΠ° ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСобходимости конвСртирования Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π³ΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ уТасных костылСй ΡƒΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°. А костылСй Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Tomb raider ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ ΠΏΠ»Π°Π½Ρ‹ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ просты:

1) ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π±Π°Π³ΠΈ, Π² особСнности с Ρ„ΠΈΠ·ΠΈΠΊΠΎΠΉ, ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ возмоТности ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° пСрсонаТСй;
2) Β«ΠΎΠΆΠΈΠ²ΠΈΡ‚ΡŒΒ» Π²Ρ€Π°Π³ΠΎΠ² Π½Π° ΠΊΠ°Ρ€Ρ‚Π°Ρ…, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ИИ ΠΈ ΠΎΡ€ΡƒΠΆΠΈΠ΅;
3) Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ систСму управлСния анимациями скСлСтных ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ мСшСй;
4) Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ возмоТности скриптовой систСмы ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ скрипты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΈΠ³Ρ€Ρƒ;
5) ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ Π² ΠΈΠ³Ρ€Π΅, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эффСкты, ΠΎΠ΄Π½Π°ΠΊΠΎ здСсь я Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… программистов OpenGL;

НапослСдок нСсколько Π²ΠΈΠ΄Π΅ΠΎ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π²ΠΈΠΆΠΊΠ°:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнный ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π° C++

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π”ΠΆΠ΅Ρ„Ρ„Π° ΠŸΡ€Π΅ΡˆΠΈΠ½Π³Π° (Jeff Preshing) How to Write Your Own C++ Game Engine.

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнный ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π° C++

Π’ послСднСС врСмя я занят Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΈΡˆΡƒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π° C++. Π― ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ ΠΈΠΌ для создания нСбольшой мобильной ΠΈΠ³Ρ€Ρ‹ Hop Out. Π’ΠΎΡ‚ Ρ€ΠΎΠ»ΠΈΠΊ, записанный с ΠΌΠΎΠ΅Π³ΠΎ iPhone 6. (ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π²ΡƒΠΊ!)

Hop Out β€” Ρ‚Π° ΠΈΠ³Ρ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠ½Π΅ хочСтся ΠΈΠ³Ρ€Π°Ρ‚ΡŒ самому: Ρ€Π΅Ρ‚Ρ€ΠΎ-Π°Ρ€ΠΊΠ°Π΄Π° с ΠΌΡƒΠ»ΡŒΡ‚ΡΡˆΠ½ΠΎΠΉ 3D-Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ. ЦСль ΠΈΠ³Ρ€Ρ‹ β€” ΠΏΠ΅Ρ€Π΅ΠΊΡ€Π°ΡΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, ΠΊΠ°ΠΊ Π² Q*Bert.

Hop Out всё Π΅Ρ‰Ρ‘ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π½ΠΎ Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π΅Ρ‘ Π² дСйствиС, Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Ρ€Π΅Π»Ρ‹Π΅ очСртания, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ я Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ здСсь нСсколькими совСтами ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π²ΠΈΠΆΠΊΠ°.

Π‘ Ρ‡Π΅Π³ΠΎ Π±Ρ‹ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ? Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΌΠ½ΠΎΠ³ΠΎ:

Π˜Π³Ρ€ΠΎΠ²Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π² 2017-ΠΎΠΌ β€” ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅, консоли ΠΈ ПК β€” ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° пСрСстала Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΡ€ΡŒΠ±ΠΎΠΉ со слабым ΠΈ Ρ€Π΅Π΄ΠΊΠΈΠΌ ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ, ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ. По-ΠΌΠΎΠ΅ΠΌΡƒ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ это скорСС Π±ΠΎΡ€ΡŒΠ±Π° со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ вашСго собствСнного произвСдСния. Запросто ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ монстра! Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ всС совСты Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π²ΠΎΠΊΡ€ΡƒΠ³ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ управляСмым. Π― объСдинил ΠΈΡ… Π² Ρ‚Ρ€ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹:

Π­Ρ‚ΠΈ совСты ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌΡƒ Π΄Π²ΠΈΠΆΠΊΡƒ. Π― Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΊΡ‚ΠΎΠ΄Π΅Ρ€Π΅Π²ΠΎ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΠΈΠ·ΠΈΠΊΡƒ. Π― полагаю, Π²Ρ‹ ΠΈ Ρ‚Π°ΠΊ Π² курсС, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ это Π·Π½Π°Ρ‚ΡŒ β€” ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ эти Ρ‚Π΅ΠΌΡ‹ зависят ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΈΠ³Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. ВмСсто этого я ΡΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Π» Ρ‚Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΡΠ²Π΅Ρ‰Π°ΡŽΡ‚ΡΡ ΡˆΠΈΡ€ΠΎΠΊΠΎ β€” Ρ‚Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Π½Π°Ρ…ΠΎΠΆΡƒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ интСрСсными, ΠΊΠΎΠ³Π΄Π° ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Ρ€Π°Π·Π²Π΅ΡΡ‚ΡŒ завСсу Ρ‚Π°ΠΉΠ½Ρ‹ Π½Π°Π΄ Ρ‡Π΅ΠΌ-Π»ΠΈΠ±ΠΎ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄

Мой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ совСт β€” Π½Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡΡΡŒ Π·Π°ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ (Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ!) Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅.

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

Вуаля! Π£ мСня появился Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΊΡƒΠ±ΠΈΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ OpenGL ES 2.0.

Моим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π±Ρ‹Π»ΠΎ скачиваниС сдСланной ΠΊΠ΅ΠΌ-Ρ‚ΠΎ 3D-ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠœΠ°Ρ€ΠΈΠΎ. Π― быстро написал Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ OBJ-Ρ„Π°ΠΉΠ»ΠΎΠ² β€” этот Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ слоТСн β€” ΠΈ ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ отрисовывал ΠœΠ°Ρ€ΠΈΠΎ вмСсто ΠΊΡƒΠ±ΠΈΠΊΠ°. Π•Ρ‰Ρ‘ я ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π» SDL_Image, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ тСкстуры.

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

Π—Π°Ρ‚Π΅ΠΌ я Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ двумя стиками, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠœΠ°Ρ€ΠΈΠΎ. (ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ я рассматривал идСю создания dual-stick ΡˆΡƒΡ‚Π΅Ρ€Π°. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Π½Π΅ с ΠœΠ°Ρ€ΠΈΠΎ).

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π΄Π΅Π»ΠΎΠΌ я Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ со скСлСтной Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π» Blender, создал модСль Ρ‰ΡƒΠΏΠ°Π»ΡŒΡ†Π° ΠΈ привязал ΠΊ Π½Π΅ΠΌΡƒ скСлСт ΠΈΠ· Π΄Π²ΡƒΡ… костСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ колСбались Ρ‚ΡƒΠ΄Π°-сюда.

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

К Ρ‚ΠΎΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ я отказался ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° OBJ ΠΈ написал скрипт Π½Π° Python для экспорта собствСнных JSON-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ· Blender. Π­Ρ‚ΠΈ JSON-Ρ„Π°ΠΉΠ»Ρ‹ описывали заскинСнный мСш, скСлСт ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Π― Π·Π°Π³Ρ€ΡƒΠΆΠ°Π» эти Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΈΠ³Ρ€Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ C++ JSON.

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ всё Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, я вСрнулся Π² Blender ΠΈ создал Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ пСрсонаТа (Π­Ρ‚ΠΎ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сдСланный ΠΈ Π·Π°Ρ€ΠΈΠ³Π°Π½Π½Ρ‹ΠΉ ΠΌΠ½ΠΎΠΉ Ρ‚Ρ€Ρ‘Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ. Π― ΠΈΠΌ вСсьма гордился.)

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСсяцСв я сдСлал Ρ‚Π°ΠΊΠΈΠ΅ шаги:

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: я Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π» Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π΄Π²ΠΈΠΆΠΊΠ° Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Π±Ρ‹Π» осознанный Π²Ρ‹Π±ΠΎΡ€. ВмСсто этого я всСго лишь писал максимально простой ΠΊΠΎΠ΄, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°, Π·Π°Ρ‚Π΅ΠΌ смотрСл Π½Π° Π½Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, какая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Под «Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ Π΄Π²ΠΈΠΆΠΊΠ°» я понимаю Π½Π°Π±ΠΎΡ€ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ этими модулями ΠΈ API для взаимодСйствия с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ.

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ фокусируСтся Π½Π° Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… практичСских Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ…. Он Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈ написании ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ΄Ρ‘Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ выдСляСтС ΠΊΠΎΠ΄ Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ измСнСния с ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π». РазумССтся, я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ систСмой контроля вСрсий.

Π“ΠΎΡ‚ΠΎΠ² ΠΏΠΎΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ тратится ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅: ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ всё, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ понадобится. Π”Π²Π΅ ΠΌΠΎΠΈΡ… Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΡ€ΠΎ опасности Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ β€” The Vicious Circle of Generalization Вомаша Дабровски ΠΈ Don’t Let Architecture Astronauts Scare You ДТоэла Бпольски.

Π― Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π° Π±ΡƒΠΌΠ°Π³Π΅ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ с Π½ΠΈΠΌΠΈ Π² ΠΊΠΎΠ΄Π΅. Π― Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ слСдуСт Π·Π°Ρ€Π°Π½Π΅Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½. НапримСр, я Π·Π½Π°Π» с самого Π½Π°Ρ‡Π°Π»Π°, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‡Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π²ΠΈΠΆΠΎΠΊ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π» всС рСсурсы Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅. ΠŸΡ€ΠΎΡΡ‚ΠΎ я Π½Π΅ пытался ΡΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΌΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π΅ Π½Π°Ρ‡Π°Π» Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ рСсурсы.

Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π΄Π°Π» ΠΌΠ½Π΅ ΠΊΡƒΠ΄Π° Π±ΠΎΠ»Π΅Π΅ ΡΠ»Π΅Π³Π°Π½Ρ‚Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, Ρ‡Π΅ΠΌ я ΠΌΠΎΠ³ Π±Ρ‹ Π²ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ, глядя Π½Π° чистый лист Π±ΡƒΠΌΠ°Π³ΠΈ. iOS-сборка ΠΌΠΎΠ΅Π³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° сСгодня Π½Π° 100% состоит ΠΈΠ· ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², систСму рСфлСксии/сСриализации, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°, Ρ„ΠΈΠ·ΠΈΠΊΡƒ ΠΈ Π°ΡƒΠ΄ΠΈΠΎ ΠΌΠΈΠΊΡˆΠ΅Ρ€. Π£ мСня Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ для вас это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. ВмСсто этого Π΅ΡΡ‚ΡŒ мноТСство ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ подходящими Π²Π°ΡˆΠ΅ΠΌΡƒ Π΄Π²ΠΈΠΆΠΊΡƒ. GLM, Bullet Physics ΠΈ STB headers β€” лишь Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· интСрСсных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Π”Π²Π°ΠΆΠ΄Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ слишком ΠΎΠ±ΠΎΠ±Ρ‰Π°Ρ‚ΡŒ

Как программисты, ΠΌΡ‹ стрСмимся ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ дублирования ΠΊΠΎΠ΄Π°, ΠΈ Π½Π°ΠΌ нравится, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ слСдуСт Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ ΡΡ‚ΠΈΠ»ΡŽ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π½Π΅ Π΄Π°Π²Π°Ρ‚ΡŒ этим инстинктам ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ всСми Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ.

ВрСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π°Ρ€ΡƒΡˆΠ°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ DRY

95% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° β€” Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ. Но Ссли ΠΎΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ вас ΡΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ услоТняСтС Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ Π±Ρ‹Π²ΡˆΠ΅Π΅ простым, спроситС сСбя: Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ эта Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π°Π΄Π²ΠΎΠ΅.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ соглашСния ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅ β€” это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ

Одна ΠΈΠ· Π²Π΅Ρ‰Π΅ΠΉ, которая ΠΌΠ½Π΅ Π½Π΅ нравится Π² Java β€” Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° заставляСт вас ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса. По-ΠΌΠΎΠ΅ΠΌΡƒ, это бСссмыслСнно. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ΄Π°Ρ‚ΡŒ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΊΠΎΠ΄Ρƒ Π±ΠΎΠ»Π΅Π΅ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΉ Π²ΠΈΠ΄, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ поощряСт пСрСуслоТнСниС ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, описанный ΠΌΠ½ΠΎΠΉ Ρ€Π°Π½Π΅Π΅.

А Π΅Ρ‰Ρ‘ Π΅ΡΡ‚ΡŒ динамичСская диспСтчСризация, которая являСтся Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°. Часто Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π΅ зная Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‹Π² программиста Π½Π° C++ β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ абстрактный Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ функциями, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ это лишь ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Π΅Ρ…Π½ΠΈΠΊ. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ динамичСской диспСтчСризации, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ привносят Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прСимущСства:

ΠžΡΠΎΠ·Π½Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ сСриализация β€” ΠΎΠ±ΡˆΠΈΡ€Π½Π°Ρ Ρ‚Π΅ΠΌΠ°

БСриализация β€” это ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, сохранСниС ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ….

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

ΠŸΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Π²Ρ‹Π±ΠΎΡ€ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· стадий остаётся Π·Π° Π²Π°ΠΌΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ нСсколько собствСнных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² процСссС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ добавляСтС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² Π΄Π²ΠΈΠΆΠΎΠΊ. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚, Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с Ρ€Π°Π½Π΅Π΅ сохранёнными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. НС Π²Π°ΠΆΠ½ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² Π²Π°ΠΌ придётся ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² C++.

МоТно ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ, ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½Ρ‹ΠΉ ошибкам ΠΊΠΎΠ΄ сСриализации, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ прСимущСством рСфлСксии β€” Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, созданиСм Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ… располоТСниС Π²Π°ΡˆΠΈΡ… C++ Ρ‚ΠΈΠΏΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ рСфлСксия ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ с сСриализациСй, взглянСм Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Π΅Ρ‚ Blender, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.

На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ На Ρ‡Π΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ

Как ΠΈ Blender, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ Π΄Π²ΠΈΠΆΠΊΠΈ β€” ΠΈ связанныС с Π½ΠΈΠΌΠΈ инструмСнты β€” ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ собствСнныС Π΄Π°Π½Π½Ρ‹Π΅ рСфлСксии. Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ способов Π΄Π΅Π»Π°Ρ‚ΡŒ это: Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ собствСнный исходный ΠΊΠΎΠ΄ Π½Π° C/C++, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ…, ΠΊΠ°ΠΊ это Π΄Π΅Π»Π°Π΅Ρ‚ Blender. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ язык описания Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ инструмСнт для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ описаний Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… рСфлСксии C++ ΠΈΠ· этого языка. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ макросы прСпроцСссора ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ C++ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… рСфлСксии Π²ΠΎ врСмя выполнСния. И ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ вас ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ появятся Π΄Π°Π½Π½Ρ‹Π΅ рСфлСксии, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ бСсчислСнныС способы Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ сСриализатор ΠΏΠΎΠ²Π΅Ρ€Ρ… всСго этого.

НСсомнСнно, я ΡƒΠΏΡƒΡΠΊΠ°ΡŽ мноТСство Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‚Π΅Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ способов ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‡Π΅Π½ΡŒ слоТны. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ просто Π½Π΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΅, сколько Π΄Ρ€ΡƒΠ³ΠΈΠ΅ систСмы Π΄Π²ΠΈΠΆΠΊΠ°, Π΄Π°ΠΆΠ΅ нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… систСм зависят ΠΎΡ‚ Π½Π΅Ρ‘. НапримСр, ΠΈΠ· 96 программистских Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² GDC 2017, я насчитал 31 Π΄ΠΎΠΊΠ»Π°Π΄ ΠΎ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅, 11 ΠΎΠ± ΠΎΠ½Π»Π°ΠΉΠ½Π΅, 10 ΠΎΠ± инструмСнтах, 3 ΠΎ Ρ„ΠΈΠ·ΠΈΠΊΠ΅, 2 ΠΎΠ± Π°ΡƒΠ΄ΠΈΠΎ β€” ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠΉΡΡ нСпосрСдствСнно сСриализации.

Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΠΏΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, насколько слоТными Π±ΡƒΠ΄ΡƒΡ‚ ваши трСбования. Если Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΡƒΡŽ ΠΈΠ³Ρ€Ρƒ Π²Ρ€ΠΎΠ΄Π΅ Flappy Bird, с нСсколькими ассСтами, Π²Π°ΠΌ скорСС всСго Π½Π΅ придётся ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ сСриализации. ВСроятно, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ тСкстуры Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ· PNG ΠΈ этого Π±ΡƒΠ΄Π΅Ρ‚ достаточно. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ с ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ, Π½ΠΎ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ свой β€” взглянитС Π½Π° сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Cereal ΠΈΠ»ΠΈ Boost.Serialization. НС Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Google Protocol Buffers идСально подходят для сСриализации ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… рСсурсов, Π½ΠΎ ΠΎΠ½ΠΈ всё Ρ€Π°Π²Π½ΠΎ стоят изучСния.

НаписаниС ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° β€” Π΄Π°ΠΆΠ΅ малСнького β€” большоС прСдприятиС. Π― ΠΌΠΎΠ³ Π±Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС, Π½ΠΎ, Ссли чСстно, самый ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ совСт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ для ΡΡ‚Π°Ρ‚ΡŒΠΈ Ρ‚Π°ΠΊΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹: Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ, слСгка ΡΠΎΠΏΡ€ΠΎΡ‚ΠΈΠ²Π»ΡΠΉΡ‚Π΅ΡΡŒ тягС ΠΊ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π°, ΠΈ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ сСриализация β€” ΠΎΠ±ΡˆΠΈΡ€Π½Π°Ρ Ρ‚Π΅ΠΌΠ°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ понадобится Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ. Мой ΠΎΠΏΡ‹Ρ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΌΠ½Π΅ΠΌ прСткновСния, Ссли Π΅Π³ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π― люблю ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ наблюдСния ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ ΠΎΡ‡Π΅Π½ΡŒ интСрСсно ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Если Π²Ρ‹ писали Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΏΡ€ΠΈΠ²Π΅Π» Π»ΠΈ ваш ΠΎΠΏΡ‹Ρ‚ ΠΊ Ρ‚Π΅ΠΌ ΠΆΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌ? А Ссли Π½Π΅ писали ΠΈΠ»ΠΈ Π΅Ρ‰Ρ‘ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ, ваши мысли ΠΌΠ½Π΅ Ρ‚ΠΎΠΆΠ΅ интСрСсны. Π§Ρ‚ΠΎ Π²Ρ‹ считаСтС Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ рСсурсом для обучСния? КакиС аспСкты Π΅Ρ‰Ρ‘ каТутся Π²Π°ΠΌ Π·Π°Π³Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΌΠΈ? НС ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½ΠΈΠΆΠ΅ ΠΈΠ»ΠΈ ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ со ΠΌΠ½ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· Twitter.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *