Jump to content
nyarum12

Гришка + Zig = эмулятор PKO

Recommended Posts

Проект эмулятора закрыт навсегда, больше возвращения к нему не будет в моей жизни.

Весь необходимый опыт, который он мне дал за всю жизнь, что я его писал (2 версии на Go и 1 версия на Crystal) - неоценим, но дальше я буду развиваться в других сферах

Эти сферы будут связаны с проектами семьи в том числе компании по дизайну и аналитикой в сфере криптовалют

Каналы по эмулятору будут закрыты в течении 1 дня, чтобы дать людям возможность прочесть это сообщение

Спасибо всем, кто следил и верил - всех люблю ❤️

Репозитории и серия стримов останутся

@V3ct0r тему можно перемещать в архив и закрывать, больше она не понадобится


Zig version of emulator can be discuss here - https://t.me/zigpko

Share this post


Link to post
Share on other sites
14 hours ago, nyarum12 said:

Проект эмулятора закрыт навсегда, больше возвращения к нему не будет в моей жизни.

Весь необходимый опыт, который он мне дал за всю жизнь, что я его писал (2 версии на Go и 1 версия на Crystal) - неоценим, но дальше я буду развиваться в других сферах

Эти сферы будут связаны с проектами семьи в том числе компании по дизайну и аналитикой в сфере криптовалют

Каналы по эмулятору будут закрыты в течении 1 дня, чтобы дать людям возможность прочесть это сообщение

Спасибо всем, кто следил и верил - всех люблю ❤️

Репозитории и серия стримов останутся

@V3ct0r тему можно перемещать в архив и закрывать, больше она не понадобится

Привет!

 

Самое главное, что ты получил большой опыт в ходе работы над своим проектом. Тут и разные модели сетевого ввода/вывода, работа с базой данных, многопоточность, вопросы архитектуры, непосредственно изучение новых языков программирования и другие вещи. Желаю тебе удачи в новых предметных областях!


Share this post


Link to post
Share on other sites

Привет, @nyarum12!

 

Рад, что ты все-таки не забросил это дело. Буду ждать завтра новостей на ютубе.

 

  • Like 1

Share this post


Link to post
Share on other sites

Привет, @nyarum12!

 

Посмотрел вчера видео, спасибо!

 

Ты рассказывал про обработку пинг-пакета от клиента: если от клиента пришел пакет длиной в 2 байта, то это пинг пакет и его надо отправить клиенту обратно, "говорим что сервер живой". 

 

Я думаю, что это должно работать следующим образом:

1) Сервер раз в N секунд отправляет клиенту пинг-пакет и сохраняет текущее время;

2) Клиент, получив пинг-пакет от сервера, должен отправить его обратно;

3) Если сервер не получил от клиента ответ через T секунд (где T - максимальное время пинга), то разрывает соединение (закрывает сокет) с этим клиентом.

 

То есть это сервер проверяет что клиент "живой", а не наоборот.

 

Насколько я помню, клиент самостоятельно не отправит пинг-пакет серверу, если последний не попросит, но могу ошибаться.

 

UPD: Оказывается я уже писал об этом в данном топике 13 сентября.


Share this post


Link to post
Share on other sites
17 часов назад, V3ct0r сказал:

Привет, @nyarum12!

 

Посмотрел вчера видео, спасибо!

 

Ты рассказывал про обработку пинг-пакета от клиента: если от клиента пришел пакет длиной в 2 байта, то это пинг пакет и его надо отправить клиенту обратно, "говорим что сервер живой". 

 

Я думаю, что это должно работать следующим образом:

1) Сервер раз в N секунд отправляет клиенту пинг-пакет и сохраняет текущее время;

2) Клиент, получив пинг-пакет от сервера, должен отправить его обратно;

3) Если сервер не получил от клиента ответ через T секунд (где T - максимальное время пинга), то разрывает соединение (закрывает сокет) с этим клиентом.

 

То есть это сервер проверяет что клиент "живой", а не наоборот.

 

Насколько я помню, клиент самостоятельно не отправит пинг-пакет серверу, если последний не попросит, но могу ошибаться.

 

UPD: Оказывается я уже писал об этом в данном топике 13 сентября.


Привет :)
Не возвращался к старому треду, но реальность такова, что клиент сам занимается "пингованием" сервера, и если он не услышит от сервера обратный пинг-ответ, то разрывает связь
Так что мне не пришлось реализовывать дополнительную пинг составляющую

Это видно по wireshark, он сразу же присылает пинг пакет после отправки сервером текущего времени

Так что это разделено на 2 части:
- Хендшейк пакет от сервера с текущим временем (этот пакет имеет опкод), на что клиент отвечает кредами от авторизации
- Пинг пакет от клиента, сервер должен отослать просто пакет из 2-х байт (это не имеет опкода, пакетом даты не считается)

  • Thanks 1

Zig version of emulator can be discuss here - https://t.me/zigpko

Share this post


Link to post
Share on other sites

Привет, @nyarum12!

 

Обратил внимание, что уже несколько недель нет новостей по твоему проекту. Все ли в порядке?


Share this post


Link to post
Share on other sites
В 06.01.2023 в 11:55, V3ct0r сказал:

Привет, @nyarum12!

 

Обратил внимание, что уже несколько недель нет новостей по твоему проекту. Все ли в порядке?

Привет, в ожидании рождения девочки, решил пока не выпускать :)

  • Thanks 1

Zig version of emulator can be discuss here - https://t.me/zigpko

Share this post


Link to post
Share on other sites
23 hours ago, nyarum12 said:

Привет, в ожидании рождения девочки, решил пока не выпускать :)

Привет!

 

Я, на самом деле, так и думал. :smile:🇹🇲

 

Спасибо что зашел!


Share this post


Link to post
Share on other sites

Привет, @nyarum12!

 

Поздравляю тебя!

  • Like 1

Share this post


Link to post
Share on other sites

Стрим завершен, ссылка в дискорде
Ютуб скорее всего его выкинет из публичного доступа из-за музыки, но ссылка останется

И я дополнительно на днях выпущу сайт со всеми будущими роликами, давно хотел

  • Thanks 1

Zig version of emulator can be discuss here - https://t.me/zigpko

Share this post


Link to post
Share on other sites

Результаты:
- Закончил обратный парсинг входа в игру

Я уже объяснял на первом стриме после возвращения, что случился затык в Crystal эмуляторе, что после отправки главного пакета входа в игру происходил баг в коннекте к игре и после чего ни один пакет уже не доходил в обе стороны. Это стало причиной, почему я переписал обратно все на Go, в очень краткой форме и сделал бинарный формат таким, чтобы можно было любой пакет энкодить и деэнкодить не зависимо серверный он, или клиентский.

Это помогло мне пофиксить пакет входа в игру в обратную сторону, взяв его от оригинального сервера и обратно спарсить в мою структуру, таким образом я проверил валидность формата и теперь он при энкоде будет 100% подходящим

image.png.0e7e0b12e4f303fed2a454714701ab24.png
 

  • Like 2

Zig version of emulator can be discuss here - https://t.me/zigpko

Share this post


Link to post
Share on other sites

Так, просьба к сообществу
У кого есть собранные исходники работающие с 1.3*, просьба поделиться пакетными структурами

К сожалению выложенные сорсы для 1.3* имеют лишние филды в enter game пакете
Мне писал как-то человек с Латвии, который имел подобное, но увы он пропал после этого

На этом моменте эмулятор застрял уже довольно долго, освободите пожалуйста наши руки :)


Zig version of emulator can be discuss here - https://t.me/zigpko

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...