В этой статье я бы хотел рассказать вам для чего нужен тот или иной файл в папке src/game/server (Это если делать сервер). Первый класс который мы будем редко использовать: CEntity(entity.cpp и entity.h). Что же в нем происходит? Ну давайте с самого начала, в teeworlds есть такие вещи как entities, к ним относятся все тайлы начиная со спавна и ниже(откройте спойлер и поймете) Сами Entities это тайлы которые можно перемещать по карте без изменения карты то есть серверно. К entities можно отнестиигрока(тии),Оружия(так как они при подборе исчезают и надо ждать чтобы они появились),Броня\Жизни(на DDRace их можно перемещать и на DM они просто исчезают при подборе), Флаги (их можно подобрать и они с вами перемещаються по карте). Этот файл я никогда не изменял(но, использовал).
Второй класс у нас будет: CEventHandler(eventhandler.cpp и eventhandler.h) В нем идет обработка событий, каких? Я не знаю, так-как за все время что я занимался созданием модов, я его не разу не использовал. Про него я особо вам не смогу рассказать. Третий класс и один из самых значимых классов в сервере: CGameContext(gamecontext.cpp и gamecontext.h) Что же это за класс? В этом классе идет обработка чата, голосований, данных передающихся между сервером и клиентом, Админ команды такие как say, teams(перемещение игроков),restart и т.д, Kick и Ban сюда не входит. Здесь идет обработка событий таких как connect, disconnect игрока, Смерть, создание взрыва, Эффект при ударе молотком, Звуки. При коннекте создается экземпляр класса CPlayer который описан в player.cpp и player.h. Четвертый класс это: CPlayer(player.cpp и player.h) Здесь идет управление над игроком, В teeworlds игрок делиться на 2 части это character(герой) и player(Игрок). Когда человек заходит на сервер то появляется Игрок, а когда спавниться tee то появляется класс character. Игрок, зачем он нам нужен? Класс игрока принимает от Клиента данные о цвете тии, в какую он тиму хочет, клан, ник, передвижения, стрельбу. Идем дальше, шестой класс CCharacter(character.cpp и character.h), самое интересное :] В этом классе происходит передвижения, изменения позиции тии, сторона куда двигается тии, координаты прицела(!!!),кол-во жизней\брони и т.д. А теперь самое главное, этот класс относиться к entity, когда ваш тии умирает то класс ломается(destroy), и управление отдается снова player. Седьмоооой класс. И так, этот класс отвечает за игру, за начало\конец раунда, место где заспавниться тии, баланс команд ------ IGameController(gamecontroller.cpp и gamecontroller.h). В этом классе нет ничего особенного. Еще один класс называется CGameWorld(gameworld.cpp и gameworld.h) и как не странно отвечает он за игровой мир(карта), но отвечает он только за entities. И в этом классе нету ничего особенного  Зайдем в под папку entities.
Так как CCharacter мы разобрали, пропустим его. CFlag(flag.cpp и flag.h) класс флага все просто и легко
Источник: http://teedes.ru/viewtopic.php?id=1400 |