Search the Community
Showing results for tags 'Разработка'.
Found 4 results
-
Система "оффлайн" ларьков Одним из игровых аспектов игры является торговля между персонажами посредством особых ларьков (лавок), которые могут открывать игроки изучив специальное умение. Игрок выставляет свои предметы за определенную цену, а остальные игроки могут покупать их. Однако, для такой торговли игрок должен находиться в игре, то есть быть подключенным к серверу, что вынуждает его оставлять свой компьютер постоянно включенным и держать игровой клиент свернутым. Это очень неудобно, поэтому была придумана система "оффлайн" ларьков, которая позволяет игрокам отключаться от сервера и при этом оставаться торговать в ларьках. Возможно несколько способов реализации такой системы, но наиболее распространена система "оффлайн" ларьков через прокси-сервер: 1) Игровой клиент (Game.exe) подключается к прокси-серверу; 2) Прокси-сервер, в свою очередь, открывает соединение с GateServer.exe; 3) Далее, прокси-сервер передает все пакеты между Game.exe и GateServer.exe, при этом анализируя их; 4) Когда игрок открывает торговый ларек, прокси-сервер фиксирует это (GateServer.exe отправил Game.exe пакет успешного открытия ларька); 5) Если игрок отключается от сервера будучи в торговом ларьке, то прокси-сервер закрывает соединение с Game.exe, но при этом сохраняет соединение с GateServer.exe и начинает имитировать Game.exe. Таким образом, GateServer.exe не подозревает о факте отключения Game.exe и персонаж игрока остается торговать в ларьке на сервере. Game.exe | Game.exe | <---------> pkodev.stallserver.exe <---------> GateServer.exe Game.exe | В данной теме обсуждается разработка такого прокси-сервера - PKOdev.NET Stall Server. Внимание! Сервер находится на стадии разработки и не предназначен для применения в "продакшене". Это означает что приложение полностью не протестировано и может содержать ошибки, баги и критические уязвимости. Возможности 1) Система оффлайн ларьков; 2) Ограничение количества оффлайн ларьков с одного IP-адреса; 3) Ограничение времени торговли в оффлайн-ларьке; 4) Автоматическое отключение аккаунта, торгующего в оффлайн ларьке, при подключении игрока с использованием того же аккаунта; 5) Оповещение игроков в чат о том, что персонаж находится в оффлайн ларьке и в данный момент не в сети (при обращении в ЛС); 6) Исправление SQL-инъекций в пакетах авторизации и создания (смены) секретного кода; 7) Установка максимального числа подключений к серверу с одного IP-адреса и интервала между подключениями. To-do: 1) Перевод комментариев в файлах Server.h and Server.cpp на английский язык; 2) Исправление падения сервера при обработке пакетов от клиента; 3) Исправление падения сервера при запуске, когда локальный порт занят; 4) Исправление зависания моста при блокировке пакета при включенном шифровании (спасибо @small666 за обнаруженный баг); 5) Синхронизация между потоками при обработке пакетов; 6) Закрытие оффлайн ларька, если все предметы проданы; 7) Модификация GateServer.exe для определения IP-адресов клиентов, которые находятся за сервером оффлайн ларьков. В данный момент в логах и базе данных IP-адреса всех клиентов будут записываться как 127.0.0.1 (если GateServer.exe и pkodev.stallserver.exe запущены на одной машине). 8 ) Совместимость с исходным кодом Corsairs Online (CO). Сборка и запуск 1) Выполните клонирование репозитория с проектом сервера к себе на диск (ссылка будет ниже); 2) Откройте файл решения pkodev.stallserver.sln в Visual Studio 2022 Community; 3) Соберите решение. Исполняемые файлы сервера появятся в папке bin; 4) Поместите конфигурационный файл pkodev.stallserver.cfg из папки cfg в одну директорию с исполняемым файлом сервера pkodev.stallserver.exe; 5) Настройте конфигурационный файл pkodev.stallserver.cfg по своему усмотрению (файл хорошо прокомментирован); 6) Для подключения игрового клиента (Game.exe) к серверу оффлайн ларьков нужно установить мод pkodev.mod.stallserver; 7) Для подключения сервера оффлайн ларьков к GateServer.exe, последний должен быть без каких-либо модификаций ("чистым"), например, из сборки PKO 1.38; 8 ) Запустите исполняемый файл сервера оффлайн ларьков pkodev.stallserver.exe. Репозиторий Git https://github.com/V3ct0r1024/pkodev.stallserver
-
[Новость] Проект по разработке Пиратии на движке Unity3D ("Top Mobile") Всем привет! В этой новости я хочу вам рассказать о существовании проекта по портированию Пиратии на игровой движок Unity3D - Top Mobile. Как сообщил владелец данного проекта, участник нашего форума @UnityDev, работа практически завершена: реализованы все основные игровые системы и проведено их тестирование, но сейчас стоит трудоемкая задача по воссозданию игровых локаций. Собственно, @UnityDev и обратился к нашему сообществу с целью поиска людей, которые помогут ему c этой задачей. Поэтому, если Вам интересен проект и у Вас есть некоторый опыт работы с движком Unity3D, то свяжитесь (на английском языке) с @UnityDev в Discord: MiniMan#9579 У проекта есть YouTube-канал, на котором выкладываются видео-ролики с демонстрацией работы клиента на новом движке: На первом видео можно увидеть знакомые локации - Аргент и остров Арены. Демонстрируется PvP между Стрелком и Воителем. Можно заметить элементы графического интерфейса пользователя (характеристики персонажа, инвентарь, элементы управления для тач-скрина). В конце видео показана работа чата. На втором видео демонстрируется процесс прохождения квеста в локации Серебряные шахты, целью которого является охота на местных обитателей - Кротов, Летучих мышей и Грязевых монстров. Здесь также появляются новые элементы GUI - аватарка с ЖЗ и МН персонажа игрока и миникарта. Судя по характерному свечению, в оружие игрока вставлены самоцветы. В конце видео мы видим фонтан Ледыни. Небольшое интервью с @UnityDev: V3ct0r: Привет и добро пожаловать на наш форум! Если ты не против, то я хотел бы задать тебе несколько вопросов. UnityDev: Привет, V3ct0r. V3ct0r: Ты один работаешь над проектом или у тебя есть команда? UnityDev: В основном работаю один, но я нанимал много профессиональных разработчиков, чтобы помочь мне с проектом. Так же я единственный владелец проекта. V3ct0r: Как долго ты трудишься над проектом? UnityDev: На самом деле, это уже мой второй проект Пиратии на движке Unity3D. Для прошлого проекта я нанял кое-кого из сообщества Пиратии, но у нас были некоторые проблемы и я решил закрыть проект. Это было два года назад. С тех пор я начал этот проект [о котором идет речь в новости]. Как говорится, мы учимся на ошибках, поэтому этот новый проект должен быть лучше. V3ct0r: Какие программы вы использовали чтобы извлечь ресурсы [модели, анимации, текстуры] из оригинального клиента игры? UnityDev: Мы использовали 3D max и Blender. V3ct0r: Насколько я понимаю, у тебя есть сервер и клиент поддерживает мультиплеер. Твой клиент на движке Unity3D совместим с оригинальными серверными файлами или твой сервер это отдельная разработка? UnityDev: Да, сначала я думал над тем, чтобы сделать клиент совместимым с оригинальными серверными файлами, но потом я решил отказаться от этой идеи, поскольку оригинальные серверные файлы имеют [уязвимости] кучу эксплоитов и неизвестных бэкдоров. Поэтому я решил сделать свой сервер. V3ct0r: Ты профессиональный разработчик игр или это твое хобби? UnityDev: Я не могу сказать что я профессиональный разработчик, но я много работал с движком Unity3D и хорошо его знаю. Иногда я прибегаю к помощи других разработчиков на платной основе, когда сталкиваюсь с проблемами, которые не могу решить самостоятельно. V3ct0r: Это будет приватная разработка или ты выложишь проект в открытый доступ? Планируешь ли ты запускать сервер, основанный на результатах данного проекта? UnityDev: Я выложу свою работу в открытый доступ. Конечно, я планирую запускать сервер. V3ct0r: Как ты думаешь, сколько тебе еще понадобится времени, чтобы зарелизить проект? UnityDev: О том, сколько времени это займет, ну, на самом деле, я уже могу выпустить бета-версию. Игровые системы закончены и протестированы. Мы уже провели много тестов, и все работает идеально. Все что осталось сделать - это карты [игровые локации]. Как ты знаешь, в Unity3D нужно создавать локации с нуля, а это занимает некоторое время. V3ct0r: Кстати, мы с другом тоже когда-то пытались портировать Пиратию на движок Unity3D UnityDev: Да, я давно видел ваш проект. Вы отлично поработали, но я не понимаю почему вы не продолжили над ним работать. V3ct0r: Благодарю тебя за ответы на мои вопросы! Если ты не против, я создам новость о твоем проекте, чтобы его могло заметить все сообщество Пиратии. UnityDev: О да, это было бы круто, спасибо! Благодарю за внимание, надеюсь, Вам было интересно! В свою очередь, я рад поддержать данный проект таким способом и желаю ему развития и удачи!
- 12 replies
-
- 3
-
-
- разработка
- клиент
-
(and 5 more)
Tagged with:
-
Раздел по разработке игры на движке Unity3D Всем привет! По просьбе пользователей на форуме был создан раздел для обсуждения и разработки Пиратии на игровом движке Unity3D. Википедия
-
Шаблон проекта мода PKOdev.NET loader для Visual Studio 2019 Community Выкладываю шаблонный проект под Visual Studio 2019 Community, который предназначен для разработки модов для PKOdev.NET mod loader на языке программирования C++. Проект включает в себя 1) Структуру файлов (address.h, pointer.h, hook.h, structure.h, dllmain.cpp); В файл address.h записываются адреса импортируемых функций и объектов из .exe файла. В данном файле также определены пространства имен для соответствующих версий .exe файла, в пределах которых необходимо указать адреса для каждой версии исполняемого файла. Все адреса должны находится в пространстве имен address. namespace address { // Game.exe 2 (1252912474) namespace GAME_13X_2 { // void CHeadSay::Render(D3DXVECTOR3& pos) const unsigned int CHeadSay__Render = 0x00470770; } // Game.exe 4 (1585009030) namespace GAME_13X_4 { // void CHeadSay::Render(D3DXVECTOR3& pos) const unsigned int CHeadSay__Render = 0x004707D0; } } В файле pointer.h находятся указатели на импортируемые функции из .exe файла. Все указатели должны находиться в пространстве имен pointer. namespace pointer { // void CHeadSay::Render(D3DXVECTOR3& pos) typedef void(__thiscall* CHeadSay__Render__Ptr)(void*, D3DXVECTOR3&); CHeadSay__Render__Ptr CHeadSay__Render = (CHeadSay__Render__Ptr)(void*)(address::MOD_EXE_VERSION::CHeadSay__Render); } В файле hook.h находятся определения функций-перехватчиков оригинальных функций из .exe файла. Все перехватчики должны находиться в пространстве имен hook. namespace hook { // void CHeadSay::Render(D3DXVECTOR3& pos) void __fastcall CHeadSay__Render(void* This, void* NotUsed, D3DXVECTOR3& Pos); } В файле structure.h находятся различные структуры данных, необходимые для работы мода. // 3D vector structure struct D3DXVECTOR3 { float x; float y; float z; }; В файле dllmain.cpp находятся точка входа, реализация функций интерфейса загрузчика, реализация функций-перехватчиков и непосредственно код мода. 2) Интерфейс загрузчика модов (loader.h) и его реализацию. 3) Конфигурации сборки для всех поддерживаемых .exe файлов с соответствующими определениями препроцессора. 4) Библиотеку MS Detours для перехвата вызова функций в .exe файлах. DetourAttach(&(PVOID&)pkodev::pointer::CHeadSay__Render, pkodev::hook::CHeadSay__Render); Как настроить проект 1) Переименуйте файлы проекта (pkodev.mod.dummy) на название Вашего мода; 2) Удалите ненужные конфигурации сборки; 3) Для каждой конфигурации сборки укажите название выходной DLL-библиотеки мода (Target Name); 4) Для каждой конфигурации сборки укажите определения препроцессора MOD_NAME, MOD_AUTHOR и MOD_VERSION. Скачать Шаблон проекта мода для Visual Studio 2019 Community (C++).