sfw
nsfw

Результаты поиска потегуразработка

Дополнительные фильтры
Теги:
разработкановый тег
Автор поста
Рейтинг поста:
-∞050100200300400+
Найдено: 172
Сортировка:

Я тут хочу свой досуг занять и сделать какую-нибудь софтинку для ДнД

Я тут хочу свой досуг занять и сделать какую-нибудь софтинку для ДнД. Подкиньте идейки.
Сразу была идея просто сделать свою автономную версию dndbeyond, но потом подумал, что оно никому нафиг не сдалось и объем работ слегка затянет создание.
В общем был бы рад помощи в придумывании. Если подкинете годную идею, то может тут и процесс разработки вкратце затрону.

Приключения ведьмы ежевики, выход демоверсии!

Ударившись в разработку мы забыли про обновления. А так то Мы скоро выпускаем демо игры!
Идут проверки на разных интернет площадках.
Blackberry the Witch: Journey demo
Открыть в Google Play
Статус обновления
О На рассмотрении Перейти на страницу "Обзор публикации",gamedev,Игры,Blackberry Witch,разработка,Приключения ведьмы Ежевики,point and click,adventure,сделал сам,нарисовал сам, сфоткал сам, написал сам, придумал сам,
 Видео по игре:

ОСдев №10: основной загрузчик, часть 3. GDT.

Подготовительный этап закончен, можно приступать к интересному. Кроме собственно загрузки файлов наша программа должна подготовить для ОС рабочую среду. Это значит: переключить процессор в 32/64-битный режим, настроить таблицу прерываний и создать базовую GDT. Сегодня разберёмся с последним пунктом.
GDT - сокращение от Global Descriptor Table, глобальной таблицы дескрипторов. Что это такое? По сути - набор записей одинакового формата, описывающих области памяти и разрешения, которые они имеют. Упрощённо это выглядит так:
//область 0
адрес области
размер области
параметры доступа
флаги
//область 1
адрес области
размер области
параметры доступа
флаги
...
В 32/64-битном режиме дескрипторные таблицы используются вместо старой схемы адресации сегмент:смещение. Зачем? Сегмент:смещение - небезопасная технология, которая позволяет переписать любой участок памяти. Надо ли говорить, что при неосторожном обращении это легко может закончиться бедой? Дескрипторная таблица даёт возможность ограничить запись или выполнение кода в отдельных областях RAM. Дескрипторные таблицы появились как часть аппаратной защиты памяти вместе с 286 процессором.
Как это работает? После выхода из 16-битного режима процессор больше не принимает адреса в формате сегмент:смещение. Если попытаетесь так сделать - получите исключение GPT (General Protection Fault). Вместо этого в сегментном регистре процессор ожидает получить смещение дескриптора внутри ДТ. При этом для операций над этим сегментом будут действовать правила, указанные в дескрипторе. Например, попытка обратиться к памяти за пределами сегмента или запись в защищённый от записи сегмент будут вызывать исключения (кстати, про обработку исключений поговорим позже, пока давайте примем, что это фатальная ошибка, которая приведёт к остановке программы).
Кроме глобальной таблицы дескрипторов существуют ещё локальные (ЛДТ), TSS и таблицы дескрипторов прерываний (IDT). Для того, чтобы наша ОС могла начать работу, обязательно наличие только двух таблиц: GDT и IDT. Давайте теперь взглянем на GDT поподробнее. Скажу сразу, зрелище будет не очень приятное. Но начнём с лёгкого. Так как GDT - часть аппаратной схемы защиты памяти, у неё есть свой регистр: GDTR. Это 48-битный регистр, 4 байта которого предназначены для смещения GDT, а 2 - для её размера. Таким образом, GDT не может быть больше 65536 байтов в размере. Размер записи в GDT - 8 байтов, значит,< таблица может иметь максимум 8192 дескриптора. Зная всё это, хорошим тоном было бы сразу зарезервировать 64К под GDT, но в моей архитектуре ОС создаёт свои таблицы, так что сейчас я обойдусь минимумом. Минимум в данном случае - 3 дескриптора. Нулевой, сегмент кода и сегмент данных. Зачем отдельно выделять нулевой дескриптор? Дело в том, что обращение к нему в GDT приводит к, вы угадали, исключению. Это тоже своего рода мера предосторожности.
А теперь время взглянуть на структуру дескриптора. И тут, увы, наследие тяжёлого прошлого во всей красе. Ради обратной совместимости в кодом для старых процессоров дескриптор GDT превратили в кашу.
Первые два байта - это первые 16 битов границы сегмента.
Следующие три байта - первые 24 бита основания сегмента.
Следующий байт - параметры доступа. Рассмотрим ниже.
Следующий байт совмещает в себе биты 16-19 границы и флаги. Об этом тоже подробнее ниже.
Ну и последний байт - биты 24-31 основания.
Неудобно? Не то слово. Когда будем писать ядро - обязательно замутим процедуру для комфортной работы с этим месивом. К счастью, сейчас у нас статичная структура всего из трёх сегментов, так что заполнить можно и вручную. Создадим и подключим модуль GDT.inc. Как это сделать, мы рассматривали в прошлый раз. И добавим в него вот такую таблицу:

Это и есть наша GDT, ничего ужасного. Значения в нулевом дескрипторе для нас не важны, а вот остальные давайте рассмотрим подробнее. У нас есть два дескриптора: один - для кода, другой - для данных. Оба начинаются с 0 и занимают FFFFF*4Kib = 4Gib. Фактически это значит, что, начав работать, ОС сможет использовать всю память по своему усмотрению. Давайте теперь разберём параметры доступа и флаги.
Бит 1 - флаг чтения/записи. Его значение различается для сегментов кода и данных.
Для сегментов кода установленный флаг означает, что чтение разрешено.
Запись в сегменты кода запрещена всегда.
Для сегментов данных установленный флаг означает, что разрешена запись. Чтение из сегментов данных
Таким образом, значение параметров доступа 10010010b даёт нам вот что: это сегмент данных, запись в него разрешена, сегмент растёт вверх, уровень привилегий - ring0. А теперь флаги. Биты 0-3 здесь заняты границей сегмента, не обращаем на них внимания.
Бит 4 зарезервирован и должен быть равен 0.
Бит 5 указывает на 64-битный сегмент. Так как мы пока переходим в 32-битный, должен быть равен 0.
Бит 6 указывает на 32-битный сегмент. Наш выбор, устанавливаем в 1.
Бит 7 - гранулярность. Если равен 0, то значение границы сегмента используется как
Окей, теперь у нас есть GDT. Но как указать системе, что её нужно использовать? Процессор ведь не дурак, сам искать не станет. Всё просто, джентльмены из IBM в кои-то веки о нас позаботились. При помощи специальной ассемблерной команды lgdt (load GDT) мы можем передать в регистр GDTR линейный адрес таблицы и её размер. Для этого добавим перед GDT такую структуру:
60ТК_р1:г:
dы 00171п	;Размер таблицы - 1 (23 байта).
dd 00000000И	;Абсолютный адрес таблицы.,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,OSDev,Операционная система,ассемблер,разработка,длиннопост
Размер таблицы мы уже знаем, а вот адрес придётся посчитать, так что пока оставим 0 и напишем процедуру инициализации GDT:
init_GDT ргос
init_GDT endp
push eax pushfd
xor eax,eax
mov ax,offset GDT
add eax,00000500h
mov dword ptr [GDTR_ptr+2],eax
cli
lgdt pword ptr GDTR_ptr sti
popfd pop eax ret,программирование,geek,Прикольные гаджеты. Научный, инженерный и  айтишный юмор,OSDev,Операционная система,ассемблер
На случай, если тут не всё очевидно, поясню. Мы помещаем в EAX смещение GDT относительно сегмента, а потом добавляем адрес сегмента*16. Это и есть линейный адрес, сохраняем его в структуре. После этого отключаем прерывания, передаём структуру процессору командой lgdt и включаем прерывания обратно. По идее прерывания можно не трогать, так как в 16-битном режиме GDT не используется, но я перестраховщик.
Собственно, на этом всё. Добавьте вызов init_GDT в конец загрузчика перед cli и дело в шляпе. Сегодня без картинки, но вот вам котик.
Чистая дискета: https://drive.google.com/file/d/1Bold4ds8oEruHQ7fJZKHglVo7A2Vc5MR/view?
Предыдущие части:

Приключения ведьмы ежевики

Давно ничего не публиковали и тому было множество причин: мы были заняты разработкой чтобы ускорить процесс.
Сами себе поставили дедлайн на 1е июня доделать демку из первой главы игры и сами успешно его... переносим. Так безусловно получилось. Где грань того самого идеального? На чём сказать хватит и перестать пытаться сделать лучше?
Попробуем добавить еще месяц.
Большая часть квестов первой главы собрана, остался код для загадок, паззлов и интерактивных элементов и некоторые недостающие элементы анимации.

Нет, мы не остановились в том что делали, вот немного анимации из игры:

Еще одно короткое геймплей видео и краткая история как я облажался

Неделю с лишним это отрисовывали и еще неделю ломал голову над интерактивностью (и производительностью и плавностью и красотой). И в тот момент когда я закоммитил изменения и запушил их в ветку, я понял что я (программист команды) облажался. На заднем фоне на мониторе я увидел это:
Я заметил что на сцене на крючок этого странного почтового ящика не должна действовать гравитация в этом направлении.
Да, оно красиво, но я в пустую ломал голову над тем чего не надо было делать. =/
Наша доблестная группа из двух с половиной непричастных к разработке и двух ленивых жопок с котом энтузиастов разработчиков игр в основываемой мною компании во всю борется чтобы успешно просрать все обещанные самим себе и другим людям сроки и дедлайны выпустить игру.
Кто-то скажет: некультурно. На что я отвечу: зато честно.
Ну а пока вот скриншот. Мы занимаемся сборкой квестов первого акта, демо на основе которого планируем выпустить к 1 июня. Так же нас можно найти и поддержать на патреоне.

Выгоним паука из кладовки?

Итак, сегодня у нас в гостях мистер паукан!
По сюжету этот милашка занял кладовку местного магазинчика. Ежевике предстоит предстоит выгнать наглого визитера.
Он не такой большой и страшный, да?Или смотря как на это посмотреть, да?
Пост с видео по игре.

Что может быть лучше возможности поиграть в игру?

Возможность в ней проиграть!
Ты идёшь в лес, а что может пойти не так?
Пытаться прогнать руками ядовитого паука, да что в этом такого?
Разговариваешь с подозрительным незнакомцем ночью на пустой улице, да чего в этом такого?
Что такого может произойти с 12 летней девочкой?

Жизнь не горшок с мёдом, жизнь горшок с ...

Blackberry Witch. Почему Unity?

В прошлых постах мы упоминали скриншот из редактора.
Да. Как верно подметили некоторые пользователи: мы используем Unity.
К Unity мы пришли рассматривая множество вариантов движков, фреймворков и библиотек.
Нам было необходимо:
1. Возможность кроссплатформенной сборки для iOS, Android, Mac, Windows.
2. Наличие готовых инструментов для работы со спрайтами, импорта и преобразования текстур и сборка атласов.
3. Наличие системы сцен и пользовательского интерфейса 
4. Наличие готовых инструментов для работы со звуком
5. Наличие поддержки системы частиц и шейдеров
6. Хорошая документация по api
7. Большое сообщество, повышающее вероятность того, что кто-то уже сталкивался с той или иной нашей проблемой
На втором плане, но не менее важно
8. Готовые инструменты для работы со скелетной анимации 
9. Наличие сносного менеджера сцен
10. Система предметов, системы квестов, сохранения состояний при переключений сцен
В нашей команде один программист и так же он занят в разработке анимации и пользовательских интерфейсов, мини игр, загадок и паззлов, это приводит к значимым ограничениям в вопросе разработки.
Наша художница ранее работала с dragon bones. Тот поддерживает Unity, Egret и Cocos2d.
Собственно Unity
Плюсы: 
1. Широкий набор инструментов работы с графикой
2. Поддержка как direct x для windows билдов, так и opengl es 3 для android
3. Система сцен и объектов сцены
4. Обфускатор
5. Набор инструментов для работы со звуком
6. Сборщики и упаковщики с разными вариантами сжатия
7. Достаточно хорошая симуляция прямо из редактора, уменьшающая необходимость различного железа в процессе разработки.
И многое другое
Значительные недостатки:
1. Отсутствие адекватного менеджера сцен для их переключения 
2. Отсутствие адекватного способа хранения данных между сценами
3. Отсутствие определенной главной сцены, сцены \ экрана загрузки
4. Отсутствие адекватной системы единого пользовательского интерфейса для всех сцен
5. Отсутствие инструментов для простой организации многоязычного перевода
6. Значительное потребление ресурсов на целевых для нас платформах
И ряд других менее значительных, как например некоторые баги.
И благодаря тому, что мы смогли решить значимые для нас недостатки, мы решили его в дальнейшем использовать.
Значимую часть из этого нам очень сильно помогло реализовать сообщество за счёт множества готовых примеров решения тех или иных вопросов, что в значимой степени ускорило разработку.
Здесь мы собираем самые интересные картинки, арты, комиксы, мемасики по теме (+172 постов - )