Программирование Корсаров: основы

Добавлен , опубликован
Содержание:
Storm Engine, игровой движок Корсаров, написан на C++. Весьма популярный язык для игр.
А что касается скриптовой части игровых движков - никакой стандартизации в те времена небыло и чуть менее, чем в каждой игре, скриптовый язык был проприетарным (самописным, уникальным).
Хотя конкретно в случае Корсаров всё не так плохо - в основе лежит тот же C++. Однако, как можно заметить по расширению .c у скриптов, от него там мало что присутствует, кроме синтаксиса (да и тот скорее следует стандарту С99).
В этом курсе я буду объяснять особенности скриптового языка Корсаров, а также основы С++, которые к нему применимы.
Материал рассчитан на новичков, а также людей вообще не знакомых с программированием. В ходе обучения вы получите весь необходимый минимум для работы со скриптовой частью игры.
Опытные программисты могут просто пробежаться глазами по разделам выискивая красные плашки ОСОБЕННОСТЬ. Под ними я стараюсь описывать всё, что работает не так, как ожидается, а также большинство проприетарных решений.

Благодарности

  • Основой для доброй половины уроков из данного курса послужили авторские уроки по С++ Дмитрия Бушуева, за что ему выражается чистосердечная пацанская уважуха.
  • Благодарность Rosarak за множественные правки и подсказки.

`
ОЖИДАНИЕ РЕКЛАМЫ...
38
Зачем notepad++, когда есть нормальные IDE типа vscode с нормальной инспекцией кода?
Если это обрезанные плюсы, то там подойдет любой c++ инспектор
Ответы (5)
24
ScorpioT1000, там нету почти ничего, кроме синтаксиса. Это все еще лучше, чем JASS, но далеко не LUA.
За инспекцию кода - согласен.
Когда разгребусь с более насущными вопросами - сделаю статью по использованию какого-нибудь инспектора.
38
avuremybe, по идее там h файлы только ему правильно показать если они есть, либо написать свои, но исключить из компиляции, чтобы функции понимал
38
avuremybe, скорее всего юзать dllimport
Тогда она будет парситься, но не будет добавляться в компиляцию
Хотя если много либ, может можно указать в настройках workspace этому инспектору папку до них просто. В vscode все настройки делятся на workspace (сохраняется в папке .vscode проекта) и на user
про расширение с инспектором тут code.visualstudio.com/docs/languages/cpp
24
ScorpioT1000, файлы заголовков там используются вообще не так, как это принято в С++
В них лежат дефайны, которые выполняют роль глобальных переменных в скриптах, еще могут лежать массивы строк для диалогов.
Разумеется, их можно использовать по назначению, но разработчики оригинала так не делали, а все итерации модмейкеров тупо повторяли "как заведено".

Чёкасаемо компиляции - оно, как я понял, вообще не компилируется. Все эти файлы скриптов "как есть" читаются движком. Там целая секция есть, которая это всё обрабатывает и пытается вызывать соответствующие функции из библиотеки С++ либо со своей, взамен того, что ты понаписал. Отсюда же невозможность обявить глобаку и цирк с дефайнами.
А если что-то пошло не так - досвидания.

В начале статьи есть ссылка на исходники движка.
Можешь посмотреть, если заинтересовало.
Это не отражает ВСЕЙ тщетности бытия, потому что там допиленная комьюнити версия, из который убрали большинство костылей, но всё, что существует на данный момент (официальные игры и аддоны) - базируется не на нем, а на оригинале.
24
ScorpioT1000, я пока не вник достаточно глубоко в это всё, поэтому мало что могу рассказать.
Но пациент очень интересный.
За ссылки спасибо, я изучу.
24
Сегодня, спустя почти год от публикации первого урока в этом цикле, я убрал с его оглавления плашку СТАТЬЯ В РАЗРАБОТКЕ.
Это первый существенный milestone моей работы по созданию базы обучающих статей.
Я не ожидал, что это будет легко. И это не было легко. Это очень выматывает и, в какой-то момент, я даже забросил данную деятельность на больше чем пол года.
У меня есть проблемы с тем, чтобы доводить дела до конца. Но я стараюсь напоминать себе, зачем я всё это начинал.
Собственно, данное сообщение я пишу именно себе. Чтобы вернуться к нему, когда будет тяжело.
Держись, малой! У нас всё получится 💪
Чтобы оставить комментарий, пожалуйста, войдите на сайт.