Обновление в новом проекте Talkvio построенном на базе форума с более 250 000 сообщений из далекого 2007 года и уже большим количеством новых с момента создания нового движка в 2023 году. Отличается наличием минусов, есть возможность указывать свое отношение к автору и менять свое отношение через системы кармы и очков (что выгодно отличается от обычного лайканья постов). Есть пометки моего (авторский контент), поиск, блочный редактор с черновиками, черновики для комментариев, оповещения, фильтры для тех кто интересуется топами комментариев или постов, многочисленные разделы со свежим/лучшим/комментируемым/авторским, реверсные и прямые отображения комментариев, подписки на теги и на пользователей, избранное, увеличение изображений, оформление своей страницы, публикацию по расписанию, подъемы постов, случайная лента / случайные посты, сайт доступен на 2 языках, имеет темную и светлую тему, подсказки для новичков, живая панель комментариев, управление клавиатурой, скрытие просмотренных постов, и многое другое. Так же ужеесть приложение на андроид. Многие вещи внедряются и дорабатываются и открыты для предложений. Реклама отсутствует как таковая. В будущем ресурс будет уделять гораздо больше вниманию авторскому контенту. Ссылка на ресурс и приложение на android в комментарии.
Изменения:
Доработки в темной теме, календарь и шапка редактора в режиме отображения постов выглядит более органично (в создании поста было и так все ок)
Исправлен баг когда могло сбиться редактирование поста при ответах под ним.
Исправлен баг на андроиде когда при попытки стереть упоминание могла закрываться клавиатура.
Исправлен скролл левой панели на маленьких экранах и андроиде в случае пролистывания снизу вверх.
Появилась возможность отменить оценку посту
Исправлен баг с отображением аватарки в некоторых случаях
Задача оказалась нетривиальной и совсем неочевидной. Оказывается, что исходные файлы DOS не так-то уж и легко переносятся в git, и уж как минимум, не как текстовые файлы в кодировке UTF-8. Но, к счастью, в отличие от утечек исходников MS-DOS 6.0, здесь имеется полный комплект файлов и инструментов, достаточный для корректной сборки и тестирования. Остались сущие нюансы, которые попили много крови.
Поэтому я, как и многие — начал свои эксперименты по сборке MS-DOS 4.0, с исправлением ошибок, а также возможностью исследования исходных кодов и тестирования их на реальном железе.
В статье же изложено краткое руководство по сборке и созданию загрузочной дискетки.
❯ Инструментарий
Собирать всё буду в Linux Mint (читай Ubuntu). Средой DOS для сборки выбрал dosbox, к сожалению, это не самый лучший вариант, потому что там идёт замедление частоты (чтобы старые программы корректно работали), поэтому сборка идёт достаточно долго. Лучше всего использовать любой удобный DOS, запущенный в виртуальной машине.
Для создания загрузочной дискеты и тестирования полученной сборки буду задействовать виртуальную машину qemu. А чтобы получить дискеты с готовым образом, я буду использовать установочную дискету MS-DOS 4.0 (найденную тут см. 4.00 OEM [Sampo]).
Прежде чем пойдём дальше — важное замечание:
Никаких чужих прав задеть не собираюсь, все модификации кода были сделаны исключительно в юмористических целях, и не подлежат распространению. Модифицированные исходники удалены.
❯ В чём сложности сборки?
Проблемы две:
Некорректная инициализация переменных среды (в самом bat-файле SETENV.BAT содержится ошибки или опечатки).
Проблемы с кодировкой при переносе кода с дискеток DOS в GIT с кодировкой UTF-8.
Первая проблема легко исправляется даже самостоятельно, при беглом анализе исходного кода. Она легко вскрывается при сборке, дальше просто необходимо внести правки, либо создать свой обновлённый bat-файл, который будет инициализировать переменные среды окружения.
Значительно сложнее обстоят дела с тем, что в части кода, при переносе в UTF-8, побились некоторые символы. У меня была попытка сборки, которую я описывал у себя в ЖЖ, и, в конце концов, я получил вот это:
Это достаточно частая и болезненная проблема со старыми исходниками времён DOS. С аналогичной задачей я столкнулся и при попытке собрать программу RAM View. Об этом пути и исправлении проблемы, я подробно написал в статье Правка чужого кода.
Здесь же мы исключим ручной труд и автоматизируем исправление проблем с кодировками.
❯ Подготовительные операции перед сборкой
Итак, шаги по сборке ДОС. Клонируем оригинальный репозиторий:
sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/MAPPER/GETMSG.ASM sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/SELECT/SELECT2.ASM sed -i -re 's/\xEF\xBF\xBD|\xC4\xBF|\xC4\xB4/#/g' MS-DOS/v4.0/src/SELECT/USA.INF
и создаём там обновлённый бат-файл для переменных среды окружения, следующего содержания:
$ cat src/e.bat @Echo off echo setting up system to build the MS-DOS 4.01 SOURCE BAK... set CL= set LINK= set MASM= set COUNTRY=usa-ms set BAKROOT=e: rem BAKROOT points to the home drive/directory of the sources. set LIB=%BAKROOT%\src\tools\bld\lib set INIT=%BAKROOT%\src\tools set INCLUDE=%BAKROOT%\src\tools\bld\inc set PATH=%BAKROOT%\src\tools;%PATH%
В принципе этих операций достаточно для сборки, а то что ниже — это лично моё хулиганство, чтобы продемонстрировать, что DOS в действительности собрался, и нет подмены файлов. Я заменяю компанию Microsoft своим ником:
find -name "*.ASM" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.INC" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.H" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.MAC" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.MSG" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.C" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.CLB" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} + find -name "*.SKL" -type f -exec sed -i 's/Microsoft/Dlinyj/g' {} +
Всё, теперь исходники подготовлены, для того чтобы их можно было корректно собрать.
❯ Сборка
Собирать буду в dosbox, как показала практика — это не самое лучшее решение, сборка занимает около часа, что, мягко скажем, раздражает.
Запускаю dosbox:
dosbox
Далее в нём монтирую текущую директорию как диск E.
mount e: ./
И переходим на диск e, запускаем в dosbox бат-файл, который инициализирует среду окружения, и начинаем сборку:
e: cd SRC e.bat
и запускаем сборку командой nmake:
Если вы делаете это в dosbox, то можно пойти погулять. Окончанием сборки будет выглядеть следующим образом:
После этого надо скопировать все собранные файлы в один каталог. Создаём каталог «4» в корне диска и копируем все бинарники специальным скриптом:
mkdir \4 CPY.BAT \4
Далее самое интересное:проверка того, что файлы запускаются. Для этого надо сделать так, чтобы dosbox прикидывался старым ДОСом. Выполняем следующую команду:
ver set 4.0
После переходим в каталог\4и можно выполнить в нёмcommand.com:
Хулиганство сработало, ДОС собрался и прикидывается, будто бы я его разработал. Дело стало за малым — протестировать это на реальном железе.
❯ Создание загрузочной дискетки
Дальше я думал просто примонтировать в dosbox пустой образ дискетки, и прямо из собранных файлов выполнить перенос системных файлов командой:
sys <path> a:
Но, факир был пьян, и фокус не удался. Поэтому решил MBR (Master Boot Record) позаимствовать с загрузочной дискетки DOS 4.0. К сожалению, MBR от MS-DOS 6.22 у меня не заработал.
Загружаемся с установочной дискетки и ставим наш пустой образ 1,44 МБ дискетки в дисковод B, с помощью qemu:
qemu-system-i386 -fda Disk01.img -fdb fdd.img
Отменяем установку и форматируем дискету с переносом системных файлов:
По окончании можно закрывать окно qemu. Возвращаемся к окну с dosbox и монтируем полученный образ дискетки, с помощью следующей команды:
imgmount a: <path to fdd.img> -t floppy
И потом просто вручную переносим файлы COMMAND.COM, IO.SYS и MSDOS.SYS на дискету:
Всё, образ готов. Можно его протестировать в виртуальной машине, или даже записать на настоящую дискету и загрузиться!
Для запуска в qemu следует использовать следующую команду:
qemu-system-i386 -fda fdd.img
Записать на дискетку можно командой dd, я использую USB-FDD дисковод.
sudo dd if=fdd.img of=/dev/sdk status=progress
И, да! Эта система успешно работает на реальном железе. В данном случае проверка идёт на 386 компьютере.
❯ Выводы
Запуск свежесобранного MS-DOS 4.0 на реальном железе
Не буду лукавить, сборка MS-DOS 4.0 оказалась не столь простой. Пришлось посмотреть некоторые видео, пошерстить различные репозитории. Но всё же это прекрасный опыт, который позволяет заглянуть внутрь исторических исходников и покопаться в них.
Давняя утечка MS-DOS 6.0 была неполной, и собрать его не представлялось возможным. А теперь у исследователей есть готовый инструментарий, для того чтобы попрактиковаться в разработки каких-то своих модулей старой операционной системы.
Конечно же, я по-настоящему жду, когда же обнародуют исходники MS-DOS 6.22, так как ещё надеюсь увидеть их на своём веку.
Приветствую, Pikabu. Я все еще продолжаю делать ММО игру :). Закончил делать механики урона по машинкам и вот как это будет в игре.
Типы урона и защита
В игре есть три типа урона: “кинетический”, “взрывной” и “термический”. Для каждого типа урона у транспорта есть своя защита.
У каждого снаряда может быть разное процентное соотношение типов урона. Например, снаряд может иметь 50% кинетического урона, 30% взрывного урона и 20% термического урона.
Например: урон 100, по 33% на каждый типа. броня корпуса допустим 50% на кинетику и по 90% на все остальное
- урон кинетикой 33 * 50% = 16
- урон термосом 33 * 90% = 3
- урон взрывом 33 * 90% = 3
Толщина брони
У каждого корпуса есть уязвимые и бронированные места. Урон, нанесённый по уязвимому месту, умножается на дополнительный коэффициент. Это заставит игроков быть более внимательными и выбирать оптимальную тактику боя, пряча уязвимые места и танковать броней.
карта брони транспорта
красная иконка говорит об "критическом уроне" а щит о "блоке"
У каждого корпуса свои уязвимые и не очень места
Невосполнимый урон
Четверть урона, который получает транспорт, уходит в категорию «невосполнимый урон». Это означает, что этот урон уже не может быть восстановлен. Чем больше транспорт получает урон, тем меньше становится его максимальное здоровье. Дебаф растёт вплоть до 66% от всего здоровья.
получаем урон, черная полоска это "невосполнимыйурон"
пытаемся отхилиться
Этот урон можно починить только за игровую валюту на базе (во имя дефляции).
Улучшение визуала
Я немного улучшил визуал, теперь повреждения оставляют следы на корпусе.
Повреждения убираются при посещении базы.
Заключение
Если вам понравилась статья или игра, присоединяйтесь к комьюнити, что бы нечего не пропустить.
Всем привет) и я вроде как разработчик с уже 13 летним стажем, но так нечего путевого, как по мне, и не создал то)), вечно банальные задачи 5-и минутки, созвоны и тд... Накипело)
И мне постоянно приходится/приходилось пользоваться для созвонов такими сервисами как google meet, zoom, skype и прочие.
И я вечно сталкивался с проблемой в этих сервисах, то лимит на подключение в 40 минут, то отсутствует кнопка "Поднять руку", то скудный набор смайлов, то фон нельзя размыть и скрыть весь бардак за спиной, а наши PMы так любят каждый раз новый сервис использовать, что уже голова кругом идет...
Ну и не долго думая решил заняться неким клоном подобных сервисов, объединить все плюсы и убрать все минусы, примерно после полу года разработки вот что вышло
Это не реклама сервиса, сервис на текущий момент абсолютно бесплатный, я просто навесил всяких метрик и хочу оценить, а как скоро он ляжет?) и из за чего?)
А так же услышать обратную связь, что плохо а что хорошо)
Проект на текущий момент не то что бы в бете, скорее в альфе) Так что могут быть баги или же вобще 502 ошибка)))
Про развитие проекта: Если все пойдет по плану, то планирую все плюшки которые есть сейчас оставить в бесплатном доступе, а монетизировать немного другим способом, но о нем позже :)
UPD: Добавил не большое обновление) Подойдет для IT интервью, а именно функционал для Live Coding, скрин добавил выше)) Возможность как совместно писать код, так и выделять фрагменты кода
Привет, Пикабу! В один из теплых дней августа 2021 года я листал Google Play в преддверии поступления в институт. Неожиданно мою голову посетила мысль, а что получится, если перенести привычную пошаговую стратегию на грани кубика Рубика? Так и начались долгие 2.5 года разработки, о которых я вам дальше и расскажу.
Лиха беда начало
Итак, сама идея. У нас есть рыцарь, у нас есть башня. С помощью вращений кубика Рубика, игрок должен переместить рыцаря на соседнюю с башней клетку. Без препятствий все звучит слишком просто, поэтому добавим нашему рыцарю здоровье и расставим на уровне злодеев, которые это самое здоровье и будут отнимать. В нашем арсенале имеются:
Враг ближнего боя, который наносит 1 единицу урона по соседним клеткам.
Пушка, которая стреляет вдоль линии и наносит 1 единицу урона.
Мортира, которая стреляет по фиксированной траектории на клетку и также наносит 1 единицу урона.
Переходим к практике. Чукча не умеет в 3д моделирование, поэтому сперва я делал голый прототип на кубиках.
Кручу-верчу, запутать хочу
Пример одного из уровней с мортирой(траектория полета снаряда показана белой кривой), врагами ближнего боя(красные кубы), героем(белый болванчик) и розовой башней.
А что с сюжетом?
В одном из чатов подкинули идею, представить все события, как игру внутри игры. Сидят храбрые воины в таверне и в перерывах между хмельным играют в "прокачанный" кубик Рубика. По этому случаю был сделан прототип меню уровней.
Однако от этой идеи я вскоре отказался и свел все к классическому противостоянию добра в роли игрока и зла в роли Обфуса, который нарушил многовековой порядок в Куболевстве(запутал кубики).
Переходим к проектированию уровней
Оказалось, что вариантов тут не слишком много:
Делать сразу в движке — долго настраивать и муторно пересобирать
Держать все в голове — рано или поздно можно поехать кукухой
Собирать в реальном мире — бесценно
Лучшей моделью кубика Рубика, как ни странно является кубик Рубика. Поэтому мною были куплены 4 штуки с размерами от 2х2 до 5х5. Остался вопрос с отображением рыцаря, башни и врагов. Я не придумал ничего лучше, чем сделать абстракции из спичек. Маленькая спичка с головкой соответствует рыцарю. Большая спичка с головкой соответствует башне. "Голая" спичка соответствует врагу ближнего боя и спичка с черточкой на одной стороне соответствует пушке. Все клетки кубиков были просверлены, для фиксации игровых моделей.
Пример модели одного из уровней 3х3 с пушкой и двумя врагами
Вот они слева направо
Эволюция графики и не только
В июле 2022 года я нашел 3д моделлера(принцип 6 рукопожатий — сила) и процесс создания low-poly моделей для игры наконец-то начался.
Получилось как то так. Не спешите закрывать пост, дальше будет лучше!
Затем в сентябре 2022 года процесс создания моделей начинается заново, поскольку графический стиль мне не понравился.
(январь 2023) Также здесь видны карточки, которые позволяют игроку упростить прохождение уровня
Одновременно с этим я придумал еще один игровой режим под названием "Собери замок". Представьте, что по клеткам кубика Рубика пустили Великую Китайскую стену. Потом кубик запутывают, а задача игрока распутать все хозяйство обратно. Звучит непросто, правда?
Вот так это выглядело на старых моделях с экспериментальным интерфейсом
После того, как было собрано и оттестировано 29 уровней я решил создать страницу в стиме и готовиться к запуску.
И что же из этого вышло?
Страница оформлена, вишлисты потихоньку капают, можно запускать рекламу, и вроде бы все хорошо.
(октябрь 2023) Старый трейлер игрового процесса
Но нет, мне говорят, что графика очень уныла, и так я слона не продам. Поэтому начинаем переделывать полностью модели/трейлеры/страницу в стиме
И вот, в апреле 2024 сделаны все модели(люди наконец-то не плюются от графики), обновлена страница в стиме и трейлеры.
Текущая версия трейлера игрового процесса
На данный момент я начал активно заниматься рекламой и готовиться к релизу в конце 2024 года. Безусловно игре есть куда расти, у меня много идей и планов по развитию проекта, которые я обязательно воплощу. Благодарю всех, кто прочитал данный пост!
И отдельное спасибо тем, кто добавил игру в список желаемого!
Я выяснил, что в gamedev только 30% разрабов используют Copilot. А "крутую" фичу используют и того меньше.
Многие жалуются на качество кода и поэтому не используют этот инструмент. Но Copilot может быть полезен не только в качестве автозавершения куска кода, но и гораздо шире. Поэтому ценность он может составлять как джунам, так и мидлам и синьорам.
"Крутая" фича – это агент/оператор workspace внутри Copilot Chat. Ну и сам Copilot Chat в том числе. На удивление, его реально мало кто использует из тех, кто уже взял Copilot как регулярный инструмент.
Как пользоваться? (см. картинку к посту)
1) установить расширение Copilot Chat
2) найти чат в левой панельке VS Code
3) активировать агента workspace через собачку для навигации по всему проекту
Агент workspace это как бы за рамками простого автозавершения. Это по сути ChatGPT, встроенный в проект, то есть он видит весь контекст проекта и может в нем ориентироваться в роли полноценного ментора и помощника для навигации по всей архитетуре проекта, а не только в рамках активного скрипта. Кстати, там под капотом как раз gpt-4.
Очень классная вещь. Еще не идеальная, но идеал будет, когда выйдет обновленный Copilot Workspace. Там агент workspace берется за основу и это главное преимущество инструмента.