Игровой дизайн, гейм дизайн (game design)
GameDev.ru / Игровой Дизайн / Форум / M2k логическая игра родом с Zx-spectrum.

M2k логическая игра родом с Zx-spectrum.

Страницы: 1 2 3 4 Следующая »
dj--alexПостоялецwww26 апр. 201716:05#0
Я всегда был большим поклонником компьютера Zx-spectrum
сделал ремейк своей игры M2k со спектрума

Задачка пока простая.
Цель игры: уничтожать троллей, мины, спасти учёных,
выращивать грибы, торговлей и даже перестрелками.

Игра с простой графикой и большим количеством логики (более 70 разных обьектов)
возможность совместной игры вдвоём на одной клавиатуре (только для ПК)
Часть текстур ещё сохранилась со старой версии.
В целом реализовано практически всё что задумано + реализованы некоторые обьекты для будущих ремейков Rescue i Colony.

Проведена огромная работа по добавлению класса танков. (для этого все таки чуть чуть пришлось коснутся ООП)
1-й уровень заменен тестовым чтобы можно было сразу попробовать все новые возможности.

Оригинальная платформа — Zx Spectrum Basic
Движок: Love2D + LUA
Все уровни полностью портированы с старой игры 1-в-1.

Подробное описание обьектов, управления и логики игры в файле
Руководство 4039
https://yadi.sk/i/ZVXJimI23YqesJ

Страничка содержащая всегда самую последнюю версию игры. (На данный момент 4211)
https://dj-alex.itch.io/m2k


M2K Zx-spectrum 48K version (Tr-dos, hobeta files)
http://yadi.sk/d/qgdIORRHAvmSA
http://ras0ft.ru/index.php/mody-i-igry/8-mody-i-igry/15-zx-spectrum (до 20 июля не работает ссылка)


ВИДЕО
Сравнение и кратко о старой версии и о ремейке.
https://www.youtube.com/watch?v=9uWsKULOl-M

Демо прохождения пары первых уровней на новой версии
https://www.youtube.com/watch?v=fASn-5Uaud8

Управление — Курсор, танк противника — Numpad курсор.
Стрельба
Lshift — обычные патроны, для танка противника — Нумпад0
Lgui/Lwindows — ледяные патроны,  Z - бомбы.
R — респавн, если есть жизни.
H — дозарядится от запасных аптечек, персонаж их переносит с собой с уровня на уровень также как и танк и защиту. но их легко потерять.
` — вызов редактора.. если совсем не поняли как пройти уровень честно можно немного поправить дело.
Есть контрольный центр для закупки и продажи вещей.

Игра бесплатна. Однако поддержке буду рад. Донат предметов ит.п. НЕ будет!

Группа ВК
https://vk.com/club134363102

Известные проблемы.
- Анимация перемещения на андроид работает без плавности, как на оригинальном Zx-spectrum.
- Сложности с Windows версии: К сожалению для работы сохранения игра должна находится в вполне определенной папке.

============================
Для тех кто уже играл ранее наиболее важные изменения

+ Может быть любое число дополнительных танков, они обучены портить предметы и мешать игроку. Урон игроку теперь работает. Сейчас они есть только в 1-м уровне.
+ В самом начале игры доступен выбор классические уровни с исправлениями - направо.  Только новейшие  уровни (начиная с 130 - налево).
+ На 130-м уровне доступна полная копия оригинальной карты из игры Rescue. Можете попробовать выжить на ней или спасти учёных.
https://www.youtube.com/watch?v=mkE-glM-PPE
+ Добавлено меню сохранения и загрузки, поддерживает как быстрое сохранение так и 10 обычных сохранений.  При выходе из игры делается автоматическое сохранение в специальный слот (quicksave-autoexit).
+ Редактор:: Добавлена загрузка внешнего уровня по кнопке Е, сохраненного игроком также как это делает загрузка сэйва. (Уровень должен быть в папке Levels)  (обычное сохранение уровня требовало сделать ребилд игры для его включения).

===========================

Правка: 11 июля 2018 0:23

SuslikМодераторwww26 апр. 201716:12#1
dj--alex
тебе не нужен движок. тебе нужна библиотека с базовой функциональностью вроде вывода растра на экран. с этим справится всё, что угодно. на C можно взять sdl, для C++ подойдёт sfml. для любого другого языка можно взять просто opengl голый и научиться выводить текстуру на экран. если код нормально написан с использованием кроссплатформенной библиотеки вроде sdl, то портировать его вообще ни на что не надо будет, он будет собираться для любой платформы.
dj--alexПостоялецwww26 апр. 201716:44#2
код написан частично на Basic  на 90%  1982 года выпуска Zx-spectrum  48Kb версия.
частично на ассемблере Z80 3Mhz версия, также было протестировано на 7Mhz версии и эмуляторе EmuzWin.

начат проект в 1998 году, полностью принял рабочий вид в 1999 .
в то же время был сделан и редактор уровней.

последние уровни делались с друзьями в 2001 году. половина без моего участия.


пример кода
https://pp.userapi.com/c837626/v837626257/4994f/U9zl8hLZ0CE.jpg
в коде использована масса хитростей для экономии памяти и он слабо читаем.

например GO SUB INT PI означает GO SUB 3 ,а  LET $a=SGN PI  означает LET $a= 1
потому что 1 занимает 6 байт в памяти, а SGN PI  - 2 байта.

Правка: 26 апр. 2017 16:49

SuslikМодераторwww26 апр. 201716:50#3
dj--alex
можешь продолжать писать на бейсике, возьми только какую-нибудь современную версию вроде visual basic или как он там называется. библиотеки для бейсика нормальные ты едва ли найдёшь, но можешь просто, как я уже говорил, использовать голый opengl, потому что функциональность тебе понадобится самая минимальная. для этого нет смысла тащить игровые движки, тем более ue/unity, они для совершенно других задач разработаны.

если же будешь делать ремейк с современной графикой, в 3д и так далее, тогда уже будет смысл задуматься о каких-то движках.

dj--alex
> например GO SUB INT PI означает GO SUB 3 ,а  LET $a=SGN PI  означает LET $a= 1
> потому что 1 занимает 6 байт в памяти, а SGN PI  - 2 байта.
всё это здорово, только чем быстрее ты это забудешь, тем быстрее сможешь адаптироваться под современные реалии.

Правка: 26 апр. 2017 16:53

fornetjobПостоялецwww26 апр. 201716:53#4
dj--alex
например GO SUB INT PI означает GO SUB 3 ,а  LET $a=SGN PI  означает LET $a= 1
потому что 1 занимает 6 байт в памяти, а SGN PI  - 2 байта.

Такое ощущение, что вернулся в 1991 год. Хорошо, что я тогда, всё же, перелез на новую, пусть и не нравящуюся мне платформу.
Хотя, тут вроде есть конкурсы, в которых ограничение по памяти имеет место быть.

Правка: 26 апр. 2017 16:53

eugenelozaПостоялецwww26 апр. 201716:55#5
dj--alex
Боюсь, что портировать такой код не получится. Придётся писать заново. С какими языками программирования Вы знакомы? Тогда можно будет посоветовать что-либо конкретное. Можно попробовать "в общем" взять не движок, а простой конструктор игр (где даже не нужно знать программирование) - этого с головой достаточно для написания не крайне сложной 2-мерной игры.
Впрочем, я бы на Вашем месте подумал бы над её существенным усовершенствованием :) Как ни как - 16 лет прошло с последней правки, много воды утекло...
Ну и принципиально и упрямо ограничившись линуксом Вы теряете немалую аудиторию. Зачем Вам это? Пишите кросс-платформенно.
dj--alexПостоялецwww26 апр. 201716:56#6
я то перелез в 2001 году на новую платформу хотя и ненавидел её тогда всем сердцем.
и только благодаря Меч и Магии 7.

а вот навыки мои если не считать  PHP, MySQL  и т.д  не перелезли.
да я могу скачать Unreal 4 , Wine, Mangos, Скомпилировать их под линукс и запустить. (и даже пропатчить)
а толку?

Видео с игрой тут.
https://www.youtube.com/watch?v=5dhuPKRHN3o&t=3s

с++ ненавижу с детства правда. меня в 7 лет заставляли его учить и я стал пылать лютой ненавистью к нему и к учебникам.

Решил попробовать движок love2d который с о в кавычках.

Правка: 26 апр. 2017 21:04

eugenelozaПостоялецwww26 апр. 201716:59#7
dj--alex
> я то перелез...а вот навыки мои... не перелезли.
Варианта 2 тогда.
Либо тупой и простой конструктор типа GameMaker-а - если цель: игра.
Либо определитесь и учите что-либо новое, типа С++ или С# - если цель: перспектива.
fornetjobПостоялецwww26 апр. 201717:05#8
dj--alex
С бейсика довольно просто перелезть на сишарп, в принципе.
despair1Постоялецwww26 апр. 201719:15#9
не знаю, зачем тут движок искать, имхо, подойдет просто линуховская библиотека для работы с консолью, типа curses

Правка: 26 апр. 2017 19:16

dj--alexПостоялецwww26 апр. 201721:39#10
нет не подойдет,  unity бы подошел но я не понимаю как там вообще с 2д работу организовать.

а love немного похож на Javascript [jnz хотя я лишь эпизодически имел с ним дело.

какой то тупой баг.  даже hello world не работает, программе глубоко плевать на пути
видите ли нет ничего.
освоение чего угодно - это препятствия препятствия и ещё раз препятствия без всякой перспективы.
https://pp.userapi.com/c837626/v837626257/49b3b/vBRj2_s28lE.jpg

оказывается надо было самому додуматся написать rebuild.sh
чтобы перед каждым запуском делался zip архив (!!) который с другим расширением и будет запускать
#!/bin/bash
zip -r m2ktest.love *.* TexturesOrig
5 часов я потратил на поиски этой хренотени чтобы просто hello world блин увидеть!

к сожалению я знаю не по наслышке что кодить что то это нужно много боли и терпения перетерпеть.
и что всё будет ВСЕГДА работать не так как ожидалось.

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

Правка: 26 апр. 2017 23:03

DDR3Удалёнwww27 апр. 20177:42#11
Повелительница
> посмотри на arctic engine, если тебе описанные ближе к концу темы возможности подойдут, то могу напрячься и реализовать за пару лет.
fixed

Правка: 27 апр. 2017 7:42

romgermanПостоялецwww27 апр. 20179:26#12
Бери LOVE2D или gamemaker
dj--alexПостоялецwww27 апр. 201711:21#13
да вот уже мучаюсь с ним, каждый раз как новый язык...
старые уровни пытаюсь прочесть как файл в массив.
получается не очень.
наверное где то раздел должен быть чтобы задавать по Love тупые вопросы для нубов.
не подскажете где?

блин так и хочется на PHP продолжить писать. там то уже всё понятно было.
до 5.1-й версии тот код что я делал был рабочий.

всё что ни найду для перебора массива выводит какую то несусветную фигню
вместо моих данных
открыл файл в HEX режиме свой уровень , и там совсем не то что он читал в line...

у меня первые 8 байт файла содержат такой текст LEVEL28.С далее идут 10 байт настройки
и 768 байт код всех обьектов на уровне....
Я же использовав доступные коды получаю какую то чушь из 9 байт
там никакого массива блин нет. закомментировал даже ибо тот кто посоветовал этот код
явно ошибся.
причем эти 9 байт не из моего файла!!!
было бы можно файл в переменную или массив нормально вчитать и побайтово разбирать.
нет в каждом языке надо ВСЁ блин по своему сделат, чтобы не так как у других.
по принципу написания обычных языков, как правильно на польском - правильно - чтобы меньше русицизмов было, побольше других слов.
если напрямую по дата обращатся - нифига вообще нет
если использоват leveldatacontent как мне его подсказали - даёт какую то чушь
а=1, первый байт код 72,  второй код 56, 3=56, 4=56, 5=56
явно то в слове LEVEL нет 4 одинаковых букв!!! откуда он эту
чему нельзя просто написать
  @$w=fopen ($logtblname,"rt");
    if ($w==false) return;
    while ($a=@fgets ($w,1000)) {$countlog++;};
и в $a получается нормальный массив чтоб его, а не неведомая фигня.

Вот такой код в Love2d получился,  кусок кода привёл.
data = love.filesystem.read (levelname);
if (not data) then love.graphics.print("Load failed.",16,16); end;
if (data) then love.graphics.print("Load succesful."..levelnumber,16,16); end;
-- leveldatacontent = {};
--for line in data do
--  table.insert (leveldatacontent, line);
--end

  if (typelevel=="zx") then maximumlines=29 else maximumlines=60; end;
  for a=1,34,1
        do love.graphics.draw(wallblock, a*16,0*16) end;
a=0;
for b=1,19,1
  do for x=1,maximumlines,1
        do
        a=a+1;
        if (data[a]) then
            love.graphics.print("x"..x.."="..string.byte (data[a]), 60*x, 16+b*8) ; end;
end;
end;

fornetjobПостоялецwww27 апр. 201711:22#14
dj--alex
Юнити поддерживает джаваскрипт. Поищите туторы по 2д играм, их полно для юнити.
Страницы: 1 2 3 4 Следующая »

/ Форум / Игровой Дизайн / Общее

2001—2018 © GameDev.ru — Разработка игр