Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ

Как Π·Π° 3 дня ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ для Π½ΠΎΠ²Π΅Π»Π»

Одним Π΄ΠΎΠΆΠ΄Π»ΠΈΠ²Ρ‹ΠΌ питСрским Π΄Π½Π΅ΠΌ ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² UE4 пСрСстал Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ, ΠΈ ΠΈΠ·-Π·Π° этого я Π·Π°Ρ…ΠΎΡ‚Π΅Π» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой собствСнный Π΄Π²ΠΈΠΆΠΎΠΊ. И ΠΎΠ΄Π½Π° Π½ΠΎΠ²Π΅Π»Π»Π° ΠΏΠΎΠ΄Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»Π° мСня ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ для Π½ΠΎΠ²Π΅Π»Π». Если Π²Π°ΠΌ хочСтся ΡƒΠ·Π½Π°Ρ‚ΡŒ побольшС ΠΈ Π²Ρ‹ Π½Π΅ Π±ΠΎΠΈΡ‚Π΅ΡΡŒ goto, gosub ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… уТасов, Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚.
Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ

ОглавлСниС

Π­Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π΄Ρ€ΡƒΠ³ зная, Ρ‡Ρ‚ΠΎ я ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ ΡƒΠΆΠ΅ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ мСсяц ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΌΠ½Π΅ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠšΠ°Ρ‚Π°Π²Ρƒ Π½Π° iPad Π±Π΅Π· Jailbreak. Π’Ρ‹Π±ΠΎΡ€ ΠΏΠ°Π» Π½Π° smart BASIC, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ я ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΡƒΠΆΠ΅ ΠΏΠΎΠ»Ρ‚ΠΎΡ€Π° Π³ΠΎΠ΄Π° ΠΈ знаю синтаксис Π΅Ρ‘ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ языка программирования (Ρ‚Π°ΠΊΠΆΠ΅ Ρƒ smart BASIC Π΅ΡΡ‚ΡŒ SDK для XCode).

Π‘Ρ€Π°Π·Ρƒ ΠΆΠ΅ Π±Ρ‹Π» скачан Π°Ρ€Ρ…ΠΈΠ² со всСми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈΠ³Ρ€Ρ‹ ΠΊΡ€ΠΎΠΌΠ΅ тСкста. Но Π½ΠΈ ΠΎΠ½ Π½Π΅ я Π½Π΅ Π·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ созданию своСго Π΄Π²ΠΈΠΆΠΊΠ° для удобства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Акт 2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ

1. ВСкст

Π€Π°ΠΉΠ» Katawa Shoujo Port.txt Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ всС скрипты.

Π€Π°ΠΉΠ» colorcodes.txt Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ RGB Ρ†Π²Π΅Ρ‚Π° ΠΈΠΌΠ΅Π½ для Ρ€Π΅Π½Π΄Π΅Ρ€Π°, для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²ΠΎΠ·ΡŒΠΌΡƒ Бидзунэ ΠΈ Π΅Π΅ синСС Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅:

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ приготовлСния сдСланы, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипт для ΠΏΠΎΠΊΠ°Π·Π° тСкста. Π’ ΠšΠ°Ρ‚Π°Π²Π΅, ΠΊΠ°ΠΊ ΠΈ Π² любой Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Π½ΠΎΠ²Π΅Π»Π»Π΅, тСкст показываСтся Π² ΠΏΠΎΠ»Π΅, ΠΈ Π½Π°Π΄ тСкстом ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ имя пСрсонаТа, ΠΎΡ‚ Ρ‡ΡŒΠ΅Π³ΠΎ Π»ΠΈΡ†Π° этот тСкст.

Π—Π° это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ скрипт speak.txt.

Для Π½Π°Ρ‡Π°Π»Π° Π² Ρ„Π°ΠΉΠ» load.txt я прописал Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ спрайта bg-say.png (ΠΏΠΎΠ»Π΅ для Ρ€Π΅ΠΏΠ»ΠΈΠΊ) ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Π° playtime_cyrillic:

ПослС я Ρ€Π΅ΡˆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² скриптС сцСнария Π·Π½Π°ΠΊ β€œ|” ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ†Π΅Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΠΎΠΉ Ρ†Π΅Π»ΠΈ, дСйствия ΠΈ Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°.

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

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнный ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π° 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.

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

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

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

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

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ

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

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

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

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

Для создания ΠΎΠΊΠΎΠ½, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π²ΠΎΠ΄Π° с ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΌΡ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ 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 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. А Π΅Ρ‰Π΅ ΠΎΠΏΡ‹Ρ‚ написания ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ большого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅. НадССмся, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Π½Π΅ΠΌ Ρ‚Π°ΠΊ ΠΆΠ΅ интСрСсно, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ интСрСсно ΠΈΠΌ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ πŸ™‚

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

ПишСм собствСнный ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ C++

Π‘ нуля создадим собствСнный ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SFML ΠΈ C++, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ происходит созданиС ядра.

Π’ этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΡ‹ создадим собствСнный ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π° C++. Π”Π²ΠΈΠΆΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ простым, Π½ΠΎ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΊ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡŽ возмоТностСй. ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ ΠΈΠ³Ρ€Π° с использованиСм этого ΠΊΠΎΠ΄Π° Ρ‚ΠΎΠΆΠ΅ ΠΊΡ€Π°ΠΉΠ½Π΅ проста: наш пСрсонаТ смоТСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π²Π»Π΅Π²ΠΎ ΠΈ ΠΏΡ€Π°Π²ΠΎ, Π° ΠΈΠ· Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ – Ρ‚ΠΎΠ»ΡŒΠΊΠΎ бэкграунд ΠΈ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠ° пСрсонаТа.

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Visual Studio

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Visual Studio. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ SFML, поэтому Ссли Π²Ρ‹ Π½Π΅ настраивали ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ для Π½Π΅Π΅, ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ сначала нСбольшоС руководство ΠΏΠΎ настройкС.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ ΠΊΠΎΠ΄Ρƒ. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСсурсы Π±ΡƒΠ΄ΡƒΡ‚ доступны Π½Π° этой страницС.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ собствСнный ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ

Π‘Π°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ – запуск Π΄Π²ΠΈΠΆΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ Main.cpp, Π½ΠΎ ΠΈΠΌ ΠΌΡ‹ займСмся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅.

Класс пСрсонаТа

Bob – простой класс для прСдставлСния Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ пСрсонаТа, управляСмой ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ. Код класса Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ, Π° Ρ‡Ρ‚ΠΎ самоС Π³Π»Π°Π²Π½ΠΎΠ΅ – Π΅Π³ΠΎ нСслоТно ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ. Для этого потрСбуСтся Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ тСкстуру ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ update().

ЗаймСмся Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ класса. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Header Files Π² Solution Explorer ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Add | New Item. Π’ ΠΎΠΊΠ½Π΅ Add New Item Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Header File (.h), Π·Π°Ρ‚Π΅ΠΌ Π² ΠΏΠΎΠ»Π΅ Name Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Bob. НаТмитС Add ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° класса:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ объявили ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° Texture ΠΈ Sprite. Π”Π°Π»ΡŒΡˆΠ΅ ΠΌΡ‹ свяТСм эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ любоС дСйствиС Π½Π° экранС с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Sprite Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π‘ΠΎΠ±Π°:

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ

ΠšΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ

Bob.cpp

Π’Π΅ΠΏΠ΅Ρ€ΡŒ приступим ΠΊ описанию ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Source Files Π² Solution Explorer ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Add | New Item. Π’ ΠΎΠΊΠ½Π΅ Add New Item ΠΊΠ»ΠΈΠΊΠ½ΠΈΡ‚Π΅ ΠΏΠΎ C++ File (.cpp), Π° Π² ΠΏΠΎΠ»Π΅ Name ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Bob.cpp. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Ρ„Π°ΠΉΠ» ΠΊΠΎΠ΄:

Π’ конструкторС ΠΌΡ‹ установили Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ m_Speed Π½Π° 400. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π‘ΠΎΠ± пСрСсСчСт экран ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ Π² 1920 пиксСлСй Π·Π° 5 сСкунд. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» Bob.png Π² Texture ΠΈ связали Π΅Π³ΠΎ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Sprite. Π’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… m_Position.x ΠΈ m_Position.y установлСно Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π‘ΠΎΠ±Π°.

Ѐункция update ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²Π° If. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ If провСряСт, Π½Π°ΠΆΠ°Ρ‚Π° Π»ΠΈ правая ΠΊΠ½ΠΎΠΏΠΊΠ° (m_RightPressed), Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ слСдит Π·Π° Π»Π΅Π²ΠΎΠΉ (m_LeftPressed). Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ If ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ (m_Speed) умноТаСтся Π½Π° elapsedTime. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ elapsedTime рассчитываСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Start Π΄Π²ΠΈΠΆΠΊΠ° (класс Engine). Им ΠΌΡ‹ ΠΈ займСмся Π΄Π°Π»Π΅Π΅.

ПишСм класс Engine

Класс Engine Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅.

Engine.h

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΎΠΊΠ½ΠΎ Add New Item (Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ для класса Bob), Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Header File (.h) ΠΈ Π² ΠΏΠΎΠ»Π΅ Name Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Engine.h. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Ρ„Π°ΠΉΠ» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Класс Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SFML, RenderWIndow, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π΅Π½Π΄Π΅Ρ€Π° всСго, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° экранС. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Sprite ΠΈ Texture Π½ΡƒΠΆΠ½Ρ‹ для создания Ρ„ΠΎΠ½Π°. Π’Π°ΠΊΠΆΠ΅ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΠΌΡ‹ создали экзСмпляр класса Bob.

Engine.cpp

Π’ Engine.cpp ΠΌΡ‹ опишСм конструктор ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ start. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» класса Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ для Bob.cpp, ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄:

Ѐункция конструктора ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ экрана ΠΈ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ³Ρ€Ρƒ Π½Π° вСсь экран с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ m_Window.create. Π’ конструкторС ΠΆΠ΅ загруТаСтся Texture ΠΈ связываСтся с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Sprite.

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. Π€ΠΎΡ‚ΠΎ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния

Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ изобраТСния ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π° своС усмотрСниС. ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Π² background.jpg ΠΈ помСститС Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Simple Game Engine/Simple Game Engine.

Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ описаны каТдая Π² своСм Ρ„Π°ΠΉΠ»Π΅, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ Engine.h. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ #include Β«Engine.hΒ», Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Visual Studio Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ.

ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Input.cpp ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄:

Ѐункция input ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ наТатия клавиш Ρ‡Π΅Ρ€Π΅Π· константу Keyboard::isKeyPressed, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ SFML. ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Escape m_Window Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎ. Для клавиш A ΠΈ D вызываСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ функция двиТСния.

ОбновляСм ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ опишСм ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ update. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ update.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Update.cpp ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ нас ΠΏΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ «Π‘ΠΎΠ±», ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ m_Bob.update.

ΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ° сцСны

Π­Ρ‚ΠΎ послСдняя функция класса Engine. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Draw.cpp ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄:

Π­ΠΊΡ€Π°Π½ очищаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ clear, Π·Π°Ρ‚Π΅ΠΌ отрисовываСтся Ρ„ΠΎΠ½. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ отрисован Ρ„ΠΎΠ½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π‘ΠΎΠ±Π°.

ЗапускаСм Π΄Π²ΠΈΠΆΠΎΠΊ Π² main()

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ Main.cpp. ВрСмя Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:

НСсколько слов Π² ΠΊΠΎΠ½Ρ†Π΅

Наш собствСнный ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ получился ΠΎΡ‡Π΅Π½ΡŒ простым: ΠΎΠ½ ΡƒΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Он Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ столкновСния, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с интСрфСйсом ΠΈ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ. Однако ΠΎΠ½ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ описываСт Ρ‚ΠΎ, ΠΊΠ°ΠΊ строится ядро ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с нуля. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ выяснили, класс Bob Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ ΠΈ адаптируСтся ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΄Π°ΠΉΡ‚Π΅ волю Ρ„Π°Π½Ρ‚Π°Π·ΠΈΠΈ ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

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

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

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