Вход

Просмотр полной версии : Разработка игр под две конфигурации



alone
05.05.2013, 13:26
Серьёзные разработчики (типа RELEVO или Mojon Twins) делают игры под несколько платформ. Особенно легко это делать, если все платформы (или конфигурации) на одном и том же Z80. Различаться должны только ресурсы (графика, музыка, звуки), загрузчик, графический движок и звуковой движок. В любом случае вся логика игры, карты и балансировка могут оставаться прежними.

Как этого добиться без лишних усилий?

Допустим, вы пишете в ALASM. Поскольку у него память под исходники ограничена, то у вас однозначно уже есть несколько исходников: в одном обвязка, в другом лежит графический движок, в другом звуковой, в третьем интеллект и т.п.

Допустим, программа уже работает под одну конфигурацию. Допустим, это 6912. Надо добавить поддержку цвета на точку. Чтобы не начинать всё с начала и не утонуть в отладке, надо переделывать программу маленькими шагами. Мой рецепт следующий:

1. Убеждаемся, что все адреса таблиц заданы константами или динамически выделяются, а не прописаны непосредственно в коде. Это можно проверить, физически сдвинув таблицу.
2. Убеждаемся, что нигде не используются абсолютные адреса графики, а есть только номера спрайтов или таблица с адресами. Это можно проверить, физически сдвинув спрайты.
3. Делаем так, что ресурсы в страничках не INCBIN'ятся, а грузятся.
4. Убеждаемся, что программа сама собирается на диск одной кнопкой (SAVEOBJ*, mrip* или m2hr*).
5. Мигрируем в ассемблер с АТМ страницами. Убеждаемся, что всё работает и после сборки на диск тоже работает.
6. Добавляем в главный исходник константу atm=1 и все последующие изменения обрамляем IFN atm ... ELSE ... ENDIF.
6. Добавляем код инициализации ATM, включаем режим EGA и смотрим на кашу на экране.
7. Переписываем графический движок так, чтобы он выводил 6912 графику на EGA экран. Экран проще всего подключать в #0000. Пусть тормозит, это не важно! Убеждаемся, что всё работает.
8. Переделываем для начала несколько спрайтов и/или тайлов под цвет на точку.
9. Переписываем одну графическую процедуру за другой под новые графические ресурсы, они должны лежать в странице. Тестируем на том, что мы наконвертили.
10. Переделываем остальные ресурсы.
11. Автосборщик должен при atm=1 сохранять игру под одним названием, а при atm=0 под другим.
12. PROFIT!

breeze
05.05.2013, 13:44
В 1997 году у меня появился Пентиум 1й 166MHz MMX все дела 32Mb памяти и карточка S3 c 2Mb на борту, но не смотря на все эти «навороты» Need For Speed III согласился запускаться только 320x240 с очень скудной графикой и всё достаточно притормаживало, поскольку, как не трудно догадаться, всё ложилось на процессор. Затем я купил 3Dfx Voodoo 2 c 12Mb на борту! И о чудо игру стало возможно запускать 800x600 (или даже 1024x768 не помню точно), машины стали достаточно «красивыми» (как для того времени), игра работа чётко, быстро и без лагов.

А теперь вернёмся к теме: И в первом случае был тот же процессор, и во втором, но между ними нюанс, как говорил Василий Иванович…

alone
05.05.2013, 14:03
Синхронизация игровой логики по кадровому прерыванию и регулировка размеров экрана могут решить проблему разной скорости у разных машин.