Какие есть хорошие подходы к изучению Half-Life 2 SDK?

StackOverflow https://stackoverflow.com/questions/803391

  •  03-07-2019
  •  | 
  •  

Вопрос

Я являюсь поклонником Half-Life уже много лет.У меня степень бакалавра компьютерных наук, и я неофициально занимаюсь программированием со средней школы.Когда я еще учился в колледже, я ради развлечения пытался стать мод-программистом... используя первый движок Half-Life... получилось не очень хорошо.Итак, я решил, что после всего моего отличного обучения в колледже :-) у меня будет больше понимания, как решить эту проблему, и я, наконец, смогу это сделать.И вот я... наконец-то в мире делового программирования Java... поэтому я скачал HL2 SDk и начал просматривать структуру классов.У меня такое чувство, будто я сделал то же самое, когда пробовал это в прошлый раз… ошеломленный и растерянный.Извините за всю предысторию.

Так как же лучше всего систематически изучать структуру кода?Я знаю Java и знаю C++... я просто не знаю, что делает какой-либо из классов... комментариев мало, а документация кажется скудной.Есть хорошие подходы?Я **не** хочу создавать свой собственный мод...Я просто хочу, возможно, однажды стать программистом модов в свободное время для какого-нибудь крутого мода... чтобы сохранить удовольствие от изучения программирования наряду с деловой стороной.

Это было полезно?

Решение

Комментарии немного и далеко, и документация кажется скудной.Есть хорошие подходы?

Добро пожаловать в чудо Source SDK.Нет, это не задокументировано.Экспериментируйте, взламывайте, ставьте точки останова и смотрите, что произойдет, если вы измените фрагменты кода.

Eсть вики в некоторых случаях вы можете оказаться полезными, но он заполняется сообществом, а не Valve, а это означает, что вы не найдете там никакой реальной документации, а только объяснения того, как предыдущие моддеры взломали движок.

Честно говоря, это отстой.Единственный способ обойти это – нырнуть.Попробуйте внести в игру различные изменения и не бойтесь разорвать существующий код.Это будет некрасиво, но если это сработает, кто будет жаловаться?Их код довольно ужасен, и, скорее всего, ваш тоже.

Другие советы

Вы можете начать с Вики для разработчиков Valve.

Я думаю, что лучший способ — проверить исходный код одного из немного существуют моды с открытым исходным кодом, Побег из тюрьмы с открытым исходным кодом.Это поможет вам хотя бы ознакомиться с кодом.

Помимо этого, это просто ресурсы для разработчиков и форумы.

Редактировать:План атаки тоже кажется отличным.

Также: Этот — отличный список, включающий как общие, так и конкретные темы.

Я бы сделал то же самое, что и с любой другой расплывчатой ​​системой...установите множество точек останова и почувствуйте структуру, наблюдая за ее работой.Добавляйте свои собственные комментарии/документацию по мере необходимости.Проверьте свое понимание, внеся небольшие изменения, и посмотрите, получите ли вы ожидаемые результаты.

Я немного поработал с Source SDK и внес некоторые изменения.На самом деле вам нужно хорошо разбираться в C и C++.Source SDK не является современным C++ и гораздо больше похож на C с классами, чем на любой настоящий ООП.

SDK просто построен таким образом, что основная часть кода состоит из объектов, многие из которых вы можете игнорировать.

Также знайте, что SDK очень активно использует наследование, поэтому обратитесь к базовым классам за функциональностью, которая вам может понадобиться.

Я бы посоветовал составить список важных файлов и классов, которые могут иметь отношение к тому, что вы хотите делать с SDK.Затем начните сортировать эти файлы, используя виртуальные папки в VS (или реальные папки в файловой системе) и используйте опцию поиска в файлах (или grep), чтобы найти дорогу.

Некоторые примеры файлов:eiface.h - Engine Interfaces GameInterface.cpp/.h - Много интерфейсов от внешних DLL для сервера cdll_client_int.cpp/.h - много интерфейсов от внешних DLL для клиента *_gamerules.cpp/.h - Gamerules (определяет логику игры. ) World.cpp - сущность, которая определяет свойства карты и загружает гейкули и другие сущности

Также попробуйте использовать для мода базу Source SDK вместо базы HL2MP.Первый вариант намного чище и его легче построить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top