Каковы хорошие подходы к изучению Half-Life 2 SDK?
Я был любителем Half-Life в течение многих лет. У меня есть степень бакалавра в области CS, и я неформально программировал со средней школы. Когда я еще учился в колледже, я пытался стать модным программистом для развлечения... используя первый движок Half-Life... не очень хорошо работал. Итак, я решил, что после всего моего отличного обучения в колледже:-) У меня было бы больше понимания того, как решить эту проблему, и, наконец, я смог бы это сделать. Так что вот я... наконец-то в мире программирования программирую Java... так что я скачал HL2 SDk и начал просматривать структуру классов. Я чувствую, что сделал это в прошлый раз, когда попробовал это... ошеломленный и смущенный. Извините за весь задний план.
Так каков наилучший способ систематического изучения структуры кода? Я знаю Java, и я знаю C++. Я просто не знаю, что делает какой-либо из классов... комментариев немного, и далеко, и документация кажется скудной. Какие-нибудь хорошие подходы? Я ** не хочу запускать свой собственный мод... Я просто хочу быть программистом в свободное время на каком-нибудь крутом моде... чтобы весело провести время в изучении программирования вместе с бизнесом.
5 ответов
комментарии немногочисленны, и документация кажется скудной. Какие-нибудь хорошие подходы?
Добро пожаловать в чудо, которое является Source SDK. Нет, это не задокументировано. Экспериментируйте, взламывайте, устанавливайте точки останова и смотрите, что произойдет, если вы измените биты кода.
Существует вики, которая может оказаться полезной в некоторых случаях, но она заполняется сообществом, а не Valve, что означает, что вы не найдете там никакой реальной документации, только объяснения того, как предыдущие моддеры взломали движок.
Честно говоря, это отстой. Единственный способ обойти это - погрузиться. Попытайтесь внести различные изменения в игру и не бойтесь разорвать существующий код на части. Это не будет красиво, но если это сработает, кто будет жаловаться? Их код довольно ужасен, и, скорее всего, ваш тоже будет.
Я думаю, что лучший способ - проверить исходный код одного из немногих модов с открытым исходным кодом, Open Source Jail Break. Это поможет вам хотя бы ознакомиться с кодом.
Кроме того, это просто ресурсы для разработчиков и форумы.
Редактировать: план атаки тоже кажется отличным.
Также: это отличный список, включающий как общие, так и конкретные темы.
Я бы делал то же, что и с любой другой расплывчатой системой... устанавливал множество точек останова и чувствовал структуру, наблюдая за ее функционированием. Добавляйте свои собственные комментарии / документацию по мере продвижения. Проверьте свое понимание, внеся небольшие изменения, и посмотрите, получите ли вы ожидаемые результаты.
Я немного поработал с Source SDK и внес некоторые изменения. На самом деле вы должны хорошо понимать C и C++. Source SDK не является современным C++ и гораздо больше похож на C с классами, чем на любой настоящий ООП.
SDK просто вылеплен тем, что основная часть кода состоит из сущностей, многие из которых вы можете игнорировать.
Также знайте, что SDK очень интенсивно использует наследование, поэтому обращайтесь к базовым классам за функциональностью, которая вам может понадобиться.
Я бы сказал, составьте список важных файлов и классов, которые могут иметь отношение к тому, что вы хотите сделать с SDK. Затем начните сортировку этих файлов с использованием виртуальных папок в VS (или реальных папок в файловой системе) и используйте опцию поиска в файлах (или grep), чтобы найти дорогу.
Некоторые примеры файлов: eiface.h - Движки интерфейсов gameinterface.cpp/.h - Множество интерфейсов из внешних dll для сервера cdll_client_int.cpp/.h - Множество интерфейсов из внешних dll для клиента *_gamerules.cpp/.h - Gamerules (определяет логику игры) world.cpp - объект, который определяет свойства карты и загружает правила игры и другие объекты
Также попробуйте использовать Source SDK Base вместо HL2MP Base для мода. Первый намного чище и его легче построить.