як сказав Джош Петрі :
" Не побудований тут синдром ;"
Я також пишу власний двигун, і, мабуть, причина буде різною для кожного розробника там, але насправді - я взагалі не люблю працювати в коді інших народів. Я нав'язливий у тому сенсі, що якщо я відчуваю, що міг би сам це побудувати, то немає сенсу в чомусь укладатись .
Я випробував різні типи ігрових двигунів, API рендерингу і таких, зокрема Ploobs, UNITY WaveEngine, XNAFinalEngine, Love, Ogre і т. Д. Багато іншого ... Я хотів почати писати ігри - завантажив багато чого, шукаючи гарного комфорту і добре задокументований пункт входу ...
Моя проблема, однак, була в той час, коли я не мав уявлення, що відбувається під двигуном. Я хотів хорошого контролю, і я хотів рамки, які я знаю, як тильна частина моєї руки. Я придумав ідею "Здравствуйте! Я думаю, що єдиний спосіб, коли я дізнаюся, як це працює, і зрозуміти це - спробувати створити власний двигун повністю і повністю з нуля". - це була абсолютно нова для мене гра з м'ячем.
Що я і закінчила.
Тому я вирішив створити XNA, оскільки я вже знав C #, і почав думати про те, як чи з чого мені почати. Мені була потрібна ідея.
Я вирішив, що, незважаючи ні на що, я б перейшов прямо в 3D .
Зниження основ було прохолодно - спрайтовий пакет, але, коли я прогресував, я виявив нові бар'єри та перешкоди - моїм першим справжнім було обмеження партії . Моєю метою було створити гру, яка могла б у будь-який час відобразити щонайменше 10000 об'єктів.
Я вирушив у нову дорогу впровадження Шедерного базування миттєвості (і навчився HLSL, коли я був на ньому), я викреслив вбудовані XNA в об'єкти Model і Effect, щоб замість цього написати свої власні заміни. Спочатку у мене виникли проблеми з розумінням потоків VBO; Я зламав речі - я зайшов до Інтернету, задаючи питання про інстанції, і тримався на ньому, поки нарешті не зрозумів, що робить GPU. Це окупилося; Тепер у мене було більше двадцяти тисяч тестових утворень, які збільшували масштаб мого огляду через пару днів налагодження мого VBO з PIX (dxsdk).
Тепер у мене було "деяке" уявлення про те, як працюють конвеєри рендерингу, але це ще не було зроблено - я в кінцевому підсумку створив власний ігровий стан, камеру, поштові ефекти та об'єкти сутності, відійшов від контентного конвеєра XNA, створивши свій власний Навантажувачі (особиста неприязнь до речі XNB), створили складну географічну ланцюг, відсортовану та змішану за станом, а також мали встановлені спрайти та текст, усе проектоване на ігрову сцену.
Я продовжував додавати, виправляти, змінювати та експериментувати з цим постійно протягом майже цілого року. Зрештою, вийшло досить непогано. Зараз у мене було розуміння того, що відбувається під кришкою, бо я створив це - моя дитина.
Зараз мій двигун був здебільшого стабільним і майже закінченим. Це не досконало: сценарій прискіпливий, а графічний інтерфейс зовсім не був чудовим. Але я все одно любив це. Тисячі рядків коду, активів та медіа - накопичились у приватному сховищі git 2 Гб, і всі головні болі, які мені довелося пережити, намагаючись зробити такий тип розвитку, який я ніколи раніше не робив. Кожна перешкода, яку я подолав, - це засвоєний урок - і полегшення.
Я зняв у ньому майже все, що хотів.
Але врешті - я вирішив, що прийшов час її відкласти.
Настільки, наскільки я задоволений написанням такого величезного двигуна сам, порадившись із мережі та інших приятелів gamedev, я вирішив, що буду це робити все заново - і робити це краще - тому що цього разу я здебільшого знаю що я роблю.
Цей проект все ще знаходиться в моєму репортажі GIT.
Мій другий пропуск при написанні нового двигуна (цього разу на MonoGame) просувається добре. Коли щось ламається, це виправити легше. Менше безладу. Я сподіваюся публічно показати свою гру десь цього року, тому що я, як правило, трохи 'занадто' прикріплений до свого коду.
Врешті-решт написання власного двигуна - це те, як я навчився це робити, при цьому, можу сказати, що я точно знаю і розумію, що робить кожен компонент, і як вони повинні працювати. Я насправді НЕЙТЕ читати код інших людей, особливо для великих незадокументованих проектів. Я хочу, щоб все, що я використовую, будувалося мною.
Це тільки я. Я сумніваюся, що коли-небудь використовувати заздалегідь зроблений двигун, напевно, тому що я думаю, що мені просто цікавіше написати власні рамки, ніж сидіти і мати справу з чиїмсь кодом - повний контроль.