Източник вътре

Въведение в programmirovnie за Source SDK

Може би сте начинаещ и нямате представа какво програмиране в C ++ и какво стои зад тези всички имена: "компилация", "клас", "интерфейс", и така нататък, в този случай, ще трябва да придобият основни умения за програмиране в C ++, след които могат напълно да изпълнява задачата си програмист мод.






Източник SDK осигурява на изходния код за изменения енджина на играта.
Това означава, че имате известни познания и инструменти може, ако има източник, че можете да направите необходимата функционалност в нея.
Какво е двигателят?
Например има един вид игра, която използвате на вашия компютър.
Играта се състои от програмен код и файлове с данни.
Файловете с данни не е трудно да се разбере какво е то - някои от които построени в света на играта, графики, карти, модели, и така нататък ..
Код - е, че изпълняват от процесора, грубо казано, аз открих, че те могат да бъдат показани на екрана, движение и звук.
Тази програма част и по-нататък "двигател".
Двигателят се състои от няколко системи, всяка от които отговаря за своя задача (графика рендиране, работа с файлове, команди за обработка, работа в мрежа, организацията на игра сцена, игрови предмети ...)

2. Източници на SDK на източника. Изтеглете винаги е възможно с помощта на пара.

3. Microsoft Visual Studio 7.1. Работата по кода, произведени в тази среда за работа и с двете Visual C ++ 7.1 от компанията Microsoft.
Може би има и други начини да се събират Visual C ++ проект, но това е отделен въпрос.

След като сте създали нов режим (Play Игри -> Инструменти / Източник SDK -> Създаване на Mod -> Промяна на Half-Life 2) отворен SRC / Game_sdk.sln файл
SLN файла - решение - решение е такъв термин в Visual Studio. Защо не го наричат ​​проект в Visual Studio 6?
Solution (.sln) се състои от няколко проекта (.vcproj), които могат да генерират всичко наведнъж или поотделно.
Това решение файл се състои от два проекта:
клиент - клиентът
хл - сървър
Защо са две от тях, а ако ни харесва, няма мултиплейър в играта?
Във всеки случай, независимо дали един играч мултиплейър двигател ще се състои от две части. Това са обяснени така, че в света на механизъм симулация игра е разделена на две отделни независими страни.
Какво прави сървъра и клиента, каква е разликата им?
Сървърът извършва симулация на виртуална реалност в реално време, което ви позволява да синхронизирате различни игрови обекти;
сървъра се присъединят към клиентите, които са и тези обекти, една или повече, обикновено в Източник на двигателя може да бъде до 255 клиенти.
В случай на игра на мрежата чрез Interent или локална мрежа, стартирайте общ сървър, която синхронизира всички клиенти, но само на локален сървър и работата на клиента в един мач.
Клиентът е отговорен за това? Той изпълнява контролен вход от информацията за играч и показване включително получили от сървъра. Т.е. тя изпълнява интерфейса с играча.
Обикновено всичко, което не е възможно (не е необходимо), по никакъв начин дисплей не се извършва на клиента за играча.
Voobscheto клиент симулира приблизително същата като на сървъра, но не може да надвишава повече енергия, отколкото на сървъра. Поради това е важно само, че клиентът за сървъра може да предава състоянието на играча, и могат да се правят различни настройки на сървъра, определени от разработчици.







Така стигнахме до извода, че двигателят има две различни страни, които се изпълняват паралелно и независими една от друга.
Сега изглежда, че в изходния код.
Има една част от код, който е отговорен за страната на клиента, сървърът е част от кода е част от кода, които те общуват.

Съставяне на този код имаме два DLL модул (клиент и сървър).

Кодът на сървъра е в SRC / DLLs директория.
Тя осигурява йерархия на сървъра класове, където един клас е основата за генерираните класове деца. При проектирането на един клас всички общи свойства на няколко дъщерни компании в родителския клас.
класове сървър обикновено имат имена като CImya (CBaseEntity. CBasePlayer).
Сървърът е отговорен за това, което се случва в играта, без значение колко трябва да се показва на екрана на играч, логиката на това, което се случва много важно за него.
В резултат на това проектът SRC / DLLs / hl_sdk.vcproj на сглобяване превръща server.dll файл.

Кодът на клиента е в SRC / cl_dll директория.
Той съдържа йерархия на клиента класове. категории клиенти обикновено имат имена като C_Imya (C_BaseEntity. C_BasePlayer). Всички класове на игра обекти, които участват в симулация на света имат съответния клас на сървъра страна.
Това е кодът upravlyuschy оказване модели, актьорска игра, за обработка на GUI интерфейс, на изхода на текстови съобщения, клавиатура и мишка обработката на входния, и така нататък. Г.
В резултат на това монтажа на SRC проекта / cl_dll / client_sdk.vcproj превръща client.dll файл.
Ако поставите на DLL файлове на клиента и сървъра в бин директория на Министерството на отбраната, двигателят ще бъде в състояние да ги свържете в началото.

Общата Кодът е в директория SRC / публични и SRC / game_shared.

В linux_sdk директория съдържа файловете, за да се създаде специален файл за тази компилация платформа - Makefile, ако zankomy с Unix, вие вече сте предположили, че е необходимо да се съберат на сървъра порт Linux.

Ние се рови в подробности

Изграждане файлове са командос Build -> Build Solution.
Прозорецът на изхода (Output), можем да видим резултата от процеса на изработка:

------ Изграждане започна: Проект: клиент, Конфигурация: Release HL2 Win32 ------

Първата компилация може да отнеме доста дълго време.
Ако комплектът е настъпило успешно, в края на продукцията ще бъдат докладвани:

Изграждане: 2 успя, 0 провали, 0 прескочи

Образувано в резултат на файловете автоматично се копира в директория на бин мод (в настройките по поръчка Изграждане стъпка).

Сега, ако стартирате играта с нашите промени при използване на предмети (повдигнете пълен с бутон предмет УПОТРЕБА), ние трябва да видите съобщение «Hello MOD!».
Стартирайте режим, можете да използвате run_mod.bat файл във вашия мод директория.

Разгледайте повече опции за командния ред, за да стартирате свой собствен модове.
Ето един пример: hl2.exe -steam -dev -condebug -developer -ent_messages_draw 1 2 -игра NAME_OF_MOD hl2.exe -steam - е да стартирате играта (не е необходимо да се промени)
-Dev (или -конзола) - включва Shell
-condebug - записва лог съобщения от console.log файла на конзолата
-1 или разработчик 2 - ниво на грешки
-ent_messages_draw 1 - otobrzhat съобщения за продължаващата работа комуникации
-игра NAME_OF_MOD - някои събития се движат (посочете името на директорията на мода Half-life2 директория) обстоен разбор ...

Не забравяйте, един от най-много ценни функции, налични в Visual Studio - е търсене кодови файлове.
Намерете в файлове - търсене на файлове или Ctrl + Shift + F клавиатура.
С търсене, можете да проследите коментарите към разгледа изходния код и да намерят най-важното място за вас да се промени.

Първата стъпка е да се разгледа основните неща, които трябва да започнат да се запознаят с устройството на двигателя.
Сървърът и клиентът предлага разнообразие от софтуерни интерфейси, които предоставят огромен списък с различни възможности.
Например,
IPhysics - обработка на физиката;
IMaterial - ogranizatsii система материал;
ICommandLine - работи с командос конзола;
IBaseFileSystem - четене / запис на файлове;
IEngineSound - аудио изход;
IInput - вход клавиатура или мишка;
и така нататък ...
Този списък е доста дълъг и подробен преглед изисква повече от този урок.

Да определено място на кода, за да се направи проверка на информация изхода на екрана като монитор за изпълнение на код - използвайте помощни функции:
UTIL_ClientPrintAll. ClientPrint или съобщ

При по-нататъшно проучване на това как двигателя ще се срещне с много подробности, които са важни, за да се разбере:
сървър и клиент лице и взаимодействието на системата, трапезни линии, система за съобщения, събития, които обработват събитие, кеширане и други.
Всичко това е включено в следващия урок.