EmissionRP - уникальный (?) мод с нуля
EmissionRP // dev_log
// INTRO
Приветствую игроков данного форума!
Данной темой я бы хотел анонсировать разработку уникального (?) игрового РП режима написанного с нуля - EmissionRP.
Я программист, который еще совсем недавно был достаточно далеким от мира SAMP'a. Я играл, но абсолютно ничего не знал о том как устроены сервера внутри, на чем они пишутся. Не знал pawno, не знаю паттернов и подходов к разработке...
И вот в один момент я понял, что мне стало абсолютно невыносимо от качества и однообразности большинства модов. Разработчики нагло врут игрокам о том, что тратят неимоверные время и усилия, но при этом выпуская раз в месяц сомнительные обновления, реализующие пару фич, разработка которых в действительности займет не больше дня.
Я захотел сделать свой мод, с блекджеком и... ну вы поняли. Я захотел доказать себе, что все эти люди ленятся и не хотят делать нормально, доказать, что делать нормально возможно!
Я уверен, что даже без знания pawno и без опыта разработки под SAMP у меня получится хороший проект. Я осознанно ни разу не смотрел исходные коды каких либо проектов, чтобы не засорять себе мозг и быть более независимым в вопросах проектирования архитектуры.
Что, опять?... Резонно! Но нет
Это не очередной мод, который будет заброшен через пять минут.
Это не очередной мод от человека, который не знает как программировать.
Это не очередной мод, который планирует быть безыдейный копиркой.
Это не очередной мод, основанный на копипастах других - я не видел код других модов.
Я уверен что мне хватит мотивации и сил, чтобы доделать этот мод. Надеюсь их хватит и моему напарнику, и мы пройдем этот пусть вместе!
Дальнейшая судьба мода неизвестна. Может быть он останется нашим личным детищем, может быть мы выложим его в паблик, может быть мы переедем в "проекты" и откроем собственный сервер. Для меня сейчас это загадка.
Мы делаем мод с желанием создавать собственные механики, но посчитали что будет слишком фатально трогать важные и привычные всем вещи. Все основные механики из других модов ИЗНАЧАЛЬНО будут присутствовать в нашем. Далее, если мы все же решим поднять проект и получим аудиторию, то мы продолжим гнуть свою "линию", и постепенно заменять привычный всем, но кривой функционал на более продуманный и соответствующий миру РП.
Еще один важный принцип нашей разработки заключается в том, что мы хотим по максимуму учесть все нюансы возможных абузов и нарушений, чтобы сделать мод максимально комфортным. Наша задача дать игрокам как можно меньше шансов что-либо нарушить, и предоставить автоматические РП наказания в случаях нарушений.
// TEAM
В настоящий момент я уже нашел себе единомышленника, который так же только встает на путь изучения pawno. Разработку всего мы ведем вдвоем. Если он захочет, то назовет себя в этой теме, или попросит меня.
Андрей, напиши мне, или сам в эту тему
// TECH
Технический мод реализуется не так, как большинство существующих модов. Вместо использования mysql, файлов и прочего мною было решено использовать отдельный сервер для работы с данными, так называемый бэкэнд.
Все операции по сохранению, обработке, просчитыванию и прочему выполняются им (бэкэндом), тем самым экономя ресурсы игрового сервера.
Второй очевидный плюс - все данные вынесены за пределы сервера, что позволяет легко использовать их где угодно еще. Например - панель администрирования, из которой можно делать практически все действия, которые можно делать с сервера.
Третий плюсом является более удобный язык (C#), позволяющий разрабатывать проще, быстрее и приятнее, чем это происходит с устаревшим pawno. Это особенно актуально при работе с данными, ведь в C# мы имеет великолепные EntityFramework и LINQ.
В настоящий момент для получения данных используется модуль HTTP, и по скорости он вроде бы как устраивает, работает более чем быстро. В прочем, я задумываюсь о том, чтобы в будущем написать C++ плагин, который будет являться мостом между сервером и бэкэндом, пересылая сообщения на более низком сокетовом уровне, нежели это делает HTTP.
Панель администрирования будет так же реализована после завершения некоторой основной части функционала мода. Она будет как для игроков, так и для админов. Хочу открыть все данные, все логи: сделать все доступным. Сделать карту с проверкой домов, машин - идей на тему админки очень много, но я пока не занимался их систематизацией и не записывал их, поэтому в данный момент не способен выдать что-то более конкретизированное.
Мод разбит на файлы. Я тут читал, что многие так не делают... Я в шоке=)))
Мод разбит на модули, которые могут быть включены или выключены.
Мод старается следовать правилам наименования и единой архитектуре модулей. Пока написано достаточно мало код, то сложно однозначно трактовать удобность архитектуры, это будет понятно только с увеличением сложности мода и количеством кода. Думаю, что архитектура со временем будет сильно меняться, и придет к чему-то совершенному.
Мод будет использовать переводы и настройки, подцеляемые из веб панели. Разумеется, они будут применяться без перезагрузки. Если не делать так - лучше не делать вообще. Единственная сложность это непрогнозируемый размер строк (решения пока нет).
Мод будет активно использовать продвинутые инклюды от Y_Less'a (YSI), тем самым еще больше улучшая свою архитектуру и функциональность, благодаря возможностям динамический хукать функции и т.д..
Мод написан с осознанием того, что делается. Например, каждая функция не является public или stock, как в 50% туториалов, разбросанных по русскому сегменту.
// Summary
Зачем эта тема? Мы видим в ней несколько причин:
1) Мы хотим делится проделанной работой, чтобы повышать мотивацию и получать отклик (советы) от других людей.
2) Мы хотим проводить опросы, иметь некую аудиторию, с которой можем советоваться.
3) Мы хотим приносить вдохновение другим разработчикам, показывать что можно делать нормально и круто, и вовсе не обязательно следовать шаблонным гайдам (помним: я не видел ни одного исходного кода существующих модов)
4) Мы хотим общаться и обсуждать идеи, проблемы и решения с другими разработчиками. Наш опыт павна - одна неделя. Да, зная другие языки этого хватило чтобы начать уверенно писать на нем, но всегда могут возникать спорные вопросы или ситуация, в которых требуется знание "внутренностей" языка.
Старт разработки - 13.07.2017
Мы следуем системе еженедельных спринтов, поэтому крупные посты об обновлениях будем стараться писать раз в неделю.
Так же мы подняли простой сайт, который агрегирует коммит-логи с наших репозиториев. Там вы можете следить за работой в лайв-режиме - http://emission-samp.ru/ (не допилен)