Автор Тема: [SMD] SGDK  (Прочитано 168833 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5756
    • Просмотр профиля
Настройка SGDK
« Ответ #450 : 20 Марта 2019, 13:04:10 »
m4x1k, попытался зарегистрироваться на spritesmind, нажал один раз Submit убралась часть формы, где нужно ввести Mortal, позже попробовал нажать ещё пару раз на Submit:
Цитировать
Information

You have been permanently banned from this board.

Please contact the Board Administrator for more information.

A ban has been issued on your IP address.
Причём форум тоже нельзя читать. Теперь понятно, почему так мало людей делают игры для SMD. Стоит ли говорить, кем нужно быть, чтобы банить по IP-адресу.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9545
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Настройка SGDK
« Ответ #451 : 20 Марта 2019, 14:35:03 »
на зарубежных форумах это не такое уж и редкое явление т.к. спамботы всех задолбали, потому если поклацал пару раз куда не нужно - давай, до свидания.
***** *****!

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5756
    • Просмотр профиля
Настройка SGDK
« Ответ #452 : 20 Марта 2019, 15:24:31 »
MetalliC, я бы понял, если на какое-то короткое время. На emu-land тоже нельзя быстро искать игры, несколько секунд задержка. Здесь комбо: не догадались прикрутить ReCaptcha + нельзя просматривать форум после бана + бессрочный бан. Выходные узлы Tor у них конечно же забанены. IP-адрес у меня динамически выдаётся, но запороть ещё один адрес не хочу.

Оффлайн Werton

  • Пользователь
  • Сообщений: 1091
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Настройка SGDK
« Ответ #453 : 20 Марта 2019, 16:32:01 »
Sharpnull, я тоже не мог там зарегаться, регистрация была отключена из-за спама на неопределенный срок, а все желающие отправлялись в ... почту админа. Написал ему раз - молчит, написал второй - молчит, недельку подождал, ну думаю дохлый номер. А помог сам Stephane, которого я попросил через github (прямо в описании бага - ничего серьезного, всего лишь не обновленный пример) написать админу SpritesMind по каким-нибудь "внутренним каналам", что он любезно и сделал, через пару дней зарегали. Вот такой вот квест :lol:

Оффлайн m4x1k

  • Пользователь
  • Сообщений: 36
    • Просмотр профиля
Настройка SGDK
« Ответ #454 : 20 Марта 2019, 18:18:24 »
Там админ со своими тараканами. Я читал, что он с соплями удалял сайт, потом возвращал.
Sharpnull, у меня тоже что-то писал про бан, я подумал, что глюк какой-то. Но бана не было. На почту пришло сообщение, что нужна ручная активация от админа. А пока — на форум хочешь зайти, пишет то же самое. Писал по почте админу тоже — ноль внимания. Потом залез в тему:
http://gendev.spritesmind.net/forum/viewtopic.php?f=1&t=2594
и понял, что у Админа тамошнего точно есть какая-то особая любовь к вновьприбывшим. Вкратце: «Я сделал, а вы не цените». И это он писал, что основным приоритетом форума является разработка новых игр. А вот Stef как раз наоборот — постоянно отписывается в темах и помогает людям.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5756
    • Просмотр профиля
Настройка SGDK
« Ответ #455 : 20 Марта 2019, 18:30:34 »
Я сейчас забанил ещё один выходной узел Tor, он забанился сразу, возможно из-за почты на mail.ru (или там всё сломано в конец), нажал кнопку с одного раза, значит дело бы не в количестве нажатий Submit. В тексте вроде не было ничего написано про запрещённые почты и это жёстко в любом случае.
Жаль Stef не перешёл на нормальный форум.
Спасибо, Werton, m4x1k. Значит нет смысла там регистрироваться, тем более английский я плохо знаю. :)

Оффлайн m4x1k

  • Пользователь
  • Сообщений: 36
    • Просмотр профиля
Настройка SGDK
« Ответ #456 : 20 Марта 2019, 20:17:38 »
По ходу изучаю ещё вывод спрайтов. Подскажите, как обозначать коллизии бэкграунда для объекта? К примеру есть тайл-спрайт. Он двигается по плану и при встрече определённого тайла он туда не может пройти. Как это реализуется? Сам принцип понимаю, в массиве делаем для всей карты значения 0/1, где 0 идти нельзя, 1 можно. Но как вот само «заграждение» для движущего спрайта выставить?

if (colission == 0)
{
    //Спрайт упирается в стену.
}

Вот, как логику красного выражения можно записать? Не нашёл примеров, к сожалению.( На примере Соника просто выставлена граница экрана, он в неё упирается. А нужно, к примеру, произвольно карту коллизий (платформы, препятствия).

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3204
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Настройка SGDK
« Ответ #457 : 26 Марта 2019, 12:24:23 »
на линухе водятся компиляторы под моторолку на С и С++.
что об этом думаете? :wow:
можем ли мы переписать SGDK под С++?
наверняка компиль код грамотней оптимизирует, чем тот что в SGDK.

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9545
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Настройка SGDK
« Ответ #458 : 26 Марта 2019, 13:23:32 »
можем ли мы переписать SGDK под С++?
нахрена ? чтоб весило побольше ?

к примеру, раньше exe-шник MAME весил 50-60 мегабайт, но сейчас, после того как большую часть кода переписали с C на C++ оно же весит под 400 мег. отсюда вопрос - а оно вам надо ?
***** *****!

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5756
    • Просмотр профиля
Настройка SGDK
« Ответ #459 : 26 Марта 2019, 13:46:56 »
можем ли мы переписать SGDK под С++?
На том форуме, где меня забанили, давно ещё спрашивали про C++, Stef отвечал, что оверхед большой. С++ медленнее чем C по определению, даже с отключением всяких фишек.

Но как вот само «заграждение» для движущего спрайта выставить?
Есть простой способ. Допустим уровень состоит из блоков 16x16, у нас есть массив с 0 и 1, каждый кадр или при перемещении персонажа преобразуем координаты углов коллайдера (прямоугольника который не должен вылезать из уровня) в массив, то есть просто делим на 16 и проверяем.
Так делается в Battle City MD, файл collision.c, функция moveAvailableInWalls().

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1151
  • Пол: Мужской
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #460 : 26 Марта 2019, 14:53:52 »
можем ли мы переписать SGDK под С++?
Может тогда сразу под пайтон? А что - язык функциональный и простой как 3 копейки :lol:

А если серьезно - плюсы по определению хуже чистого ЦЭ. Итоговый бинарник будет весить больше, выполняться медленнее, а сам код будет генериться максимально убогим образом. Си - это, грубо говоря, высокоуровневый ассемблер, а плюсы даже не системные. Да и вообще, где тот старый добрый сигаман, который любил чистый асм?))

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9545
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Настройка SGDK
« Ответ #461 : 26 Марта 2019, 15:13:22 »
С++ медленнее чем C по определению, даже с отключением всяких фишек.
выполняться медленнее, а сам код будет генериться максимально убогим образом.
кто вам таких глупостей понарассказывал ? лет 20 с лишним назад - да, было дело, но уже много лет как это не так.
более того, при использовании C++ного или C++11 STL частенько генерится более эффективный код чем при использовании C-шного подхода.

а если есть сомнения всегда можно сходить на https://godbolt.org/ и посмотреть что получается на выхлопе тех или иных компиляторов.
***** *****!

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1151
  • Пол: Мужской
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #462 : 27 Марта 2019, 16:32:59 »
MetalliC, это я не различных форумах поначитался :blush:
спасибо за сайт - такому любителю покопаться в коде как я это просто находка)
« Последнее редактирование: 27 Марта 2019, 16:40:29 от worm »

Оффлайн m4x1k

  • Пользователь
  • Сообщений: 36
    • Просмотр профиля
Настройка SGDK
« Ответ #463 : 27 Марта 2019, 18:49:25 »
Ответ самого разработчика такой был:
Цитировать
SGDK does not support C++ as it requires more binaries and libraries to get it work (actually a lot more). I always wanted to maintain SGDK size to the strict minimum requirement, also C++ add some overhead which might hurt for megadrive development...
Still i agree it would be nice to have C++ (and so OO programming) support, that may be something to thing about... I believe Chilly Willy already got C++ support on with 68k targeted gcc and he reported overhead was not that heavy. Problem is that i really want to stay on gcc 3.4.6 for SGDK as newers version are really awful in term of code generation for 68k target.

Я сам всю жизнь C++ изучал, никаких проблем с SGDK пока не встретил.

Скажите, а каким инструментом сейчас удобнее пользоваться для создания карты, который понимает тайлы и карту в Сеговском формате?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5756
    • Просмотр профиля
Настройка SGDK
« Ответ #464 : 27 Марта 2019, 22:24:50 »
MetalliC, я скорее имел в виду не генерацию, а подходы структурного процедурного программирования и ООП. Хотя да, это утверждение было неверно в любом случае.

Скажите, а каким инструментом сейчас удобнее пользоваться для создания карты, который понимает тайлы и карту в Сеговском формате?
Можно просто скормить PNG rescomp, он найдёт дубликаты и отражения, я грузил как IMAGE и там уже есть палитра, map data и сами тайлы. Карту нужно в коде грузить в нужный момент, а тайлы обычно грузят сразу все, если памяти хватает. Сам Stef так делает, экспортируя из известного редактора Tiled. Там упоминается ещё специальный редактор Beehive от создателя Tanglewood.
--------
У способа с IMAGE есть одна проблема, там уровень компрессии задаётся для карты и для тайлов одновременно, а если динамически подгружать карту, то на распаковку уходит память и время, хотя тайлы можно сжать сильно, если грузятся только в начале уровня. В rescomp.txt написано, что MAP не поддерживается, но я не пробовал. Кстати, rescomp теперь зависит от java.
« Последнее редактирование: 28 Марта 2019, 15:45:53 от Sharpnull »

Оффлайн m4x1k

  • Пользователь
  • Сообщений: 36
    • Просмотр профиля
Настройка SGDK
« Ответ #465 : 28 Марта 2019, 06:19:19 »
Sharpnull, имелось ввиду именно редактор. Попробую Tiled, спасибо. :)
Объясните ещё нубу: вот имеется спрайт на экране, у него фиксированное поле 512х512. Есть ещё 20 спрайтов/npc. Если я скроллю экран и хочу, чтобы двигался только основной персонаж, то мне нужно каждому спрайту npc выравнивать координаты, чтобы он остался на фиксированной точке, всё верно? Или есть иной способ?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5756
    • Просмотр профиля
Настройка SGDK
« Ответ #466 : 28 Марта 2019, 13:00:13 »
m4x1k, слой спрайтов не скроллится, так что, насколько я знаю, по-другому нельзя.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 773
  • Кищучнëм по-маленькой?
    • ВКонтакте
    • Просмотр профиля
Настройка SGDK
« Ответ #467 : 28 Марта 2019, 14:09:13 »
Уговаривал стеффа давно ещё замутить ф-цию зеркалирования изображения.
А он такой типа "зачем?, оно же всё равно компилятором ресов распознаёт зеркальные участки".
Но рассмотрим случай, если мне пикчу фона в анимации надо забадяжить, или в каких-то сценах в одном виде, в каких-то - в зеркальном виде. То это прогонять через компилятор оба варианта пикчи, это будут две уникальные пикчи.

Конечно можно прогонять через тайловый массив, с заданным атрибутом зеркалирования и расположением XY в обратном порядке, но это сложна + куча лишнего велосипедного кода.
Кстати, о велосипедах. Дермосценеры щеголяют всякими эффектами. Почему бы не сделать набор ф-ций, и сделать из низкоуровневого СДК высокоуровневый движок.
Я вот когда делал эффект palette shifting, заготовил на каждый шифт палитры тайлик, из которого через данные извлекал индексы и присваивал заданной пикче. Но ведь можно было бы процедурно это сделать, но для меня, ламера, сложновато. Почему бы на такие ситуации не собрать набор ф-ций, и не выложить в общий доступ, чтоб любой желающий, не имеющий скилла в прогинге, мог осилить сделать игору ? 

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5756
    • Просмотр профиля
Настройка SGDK
« Ответ #468 : 28 Марта 2019, 16:17:21 »
ALKOSHA, про "зеркалирование", имеется в виду полное (или региона) отражение изображения и проблема в доп. памяти из-за дублирования тайлов? Я бы не сказал, что прям много кода. Перетасовать map data и вызвать ту же VDP_setTileMapData*(). Вам кажется что это всем нужно, а ему это поддерживать. Можно ещё просто отразить изображение рядом в той же картинке, только наверно это будет неудобно и какие-нибудь ограничения вылезут.
Почему бы на такие ситуации не собрать набор ф-ций, и не выложить в общий доступ, чтоб любой желающий, не имеющий скилла в прогинге, мог осилить сделать игору ? 
Наверно просто нет желающих. Высокоуровневый движок для NES на кикстартере же был. Инструмент для создания текстовых квестов для MD есть, потому что это просто реализовать.

Оффлайн m4x1k

  • Пользователь
  • Сообщений: 36
    • Просмотр профиля
Настройка SGDK
« Ответ #469 : 29 Марта 2019, 08:49:52 »
Sharpnull, понял, спасибо. А как можно реализовать динамическую подгрузку карты? Есть, к примеру, карта 128/128. План выставлен как 64/32. Карта грузится сразу целой (128/128) и постепенно смещается, или нужно разбивать карту на несколько отрезков (по 32/32) и загружать целиком каждый раз? Как это происходит в SGDK? Есть ли пример со скроллингом и подгрузкой у кого-нибудь?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5756
    • Просмотр профиля
Настройка SGDK
« Ответ #470 : 29 Марта 2019, 12:41:03 »
m4x1k, ручками нужно делать, как в оригинальном Sonic, например. Никакой поддержки от SGDK. Видел объяснения несколько раз с картинками (это не специфично только для SGDK), суть в перезаписи столбцов/строк перед камерой. В Sonic записываются толщиной 2 тайла (16 пикселей), наверно для эффективности. На картинке зелёная область - экран, по центру - то, что было позади.
208437-0
Я смотрел когда-то этот пример: Scrolling Map Demo (github), но что-то там было криво сделано, наверно обращение за пределы памяти, что видно в Plane Explorer/Viewer эмулятора. Кроме того, там тайлы/карта/палитры заданы в коде. Я делал загрузку прямо из Image (png), но для эффективности приходилось убирать сжатие, что увеличивало размеры рома. Как уже выше писал, к сожалению не знаю как просто сжимать только тайлы, без карты.

Оффлайн m4x1k

  • Пользователь
  • Сообщений: 36
    • Просмотр профиля
Настройка SGDK
« Ответ #471 : 29 Марта 2019, 22:39:02 »
m4x1k, ручками нужно делать, как в оригинальном Sonic, например. Никакой поддержки от SGDK. Видел объяснения несколько раз с картинками (это не специфично только для SGDK), суть в перезаписи столбцов/строк перед камерой. В Sonic записываются толщиной 2 тайла (16 пикселей), наверно для эффективности. На картинке зелёная область - экран, по центру - то, что было позади.
(Ссылка на вложение)
Я смотрел когда-то этот пример: Scrolling Map Demo (github), но что-то там было криво сделано, наверно обращение за пределы памяти, что видно в Plane Explorer/Viewer эмулятора. Кроме того, там тайлы/карта/палитры заданы в коде. Я делал загрузку прямо из Image (png), но для эффективности приходилось убирать сжатие, что увеличивало размеры рома. Как уже выше писал, к сожалению не знаю как просто сжимать только тайлы, без карты.
Спасибо большое. С сжатием, да, не ясно, почему карты RESCOMP до сих пор не поддерживает. Ни отдельно не загрузить, ни сжатие произвольно не выставить.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 773
  • Кищучнëм по-маленькой?
    • ВКонтакте
    • Просмотр профиля
Настройка SGDK
« Ответ #472 : 30 Марта 2019, 09:02:31 »
Сжатие SGDK больше годится для скроллов, а-ля, зельда.
Выставил 256*224 экран, плэйны 512*512.
Загрузил на него одну пикчу: как только герой выходит за пределы, с оффсетом 256 выплёскивать другую пикчу, а после - скроллить.
И то, получается, что каждая пикча уникальна для кода, тогда как обе они могут содержать одинаковый набор тайлов. В общем, шляпнеко. Экономнее процедурно в цикле грузить отдельные пикчи, нарезанные на тайлы.

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3204
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Настройка SGDK
« Ответ #473 : 14 Апреля 2019, 01:01:16 »
короче чо вы думаете компиль сделал первым делом увидев мой код?
оптимизация просто сумасшедшая, компиль буквально меня за идиота считает и трёт больше половины моего кода, так как результат его выполнения един  :cool:
а SGDK-шный компиль чот так не могёт и неделает :lol:
надеюсь время будет доработать ето всё до рабочей версии, ибо такого уровня оптимизация просто необходима я считаю.
кстати это подтвердило мнение о том, что современная оптимизация С++ вполне может утереть нос старенькому Си

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1151
  • Пол: Мужской
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #474 : 14 Апреля 2019, 23:02:47 »
это подтвердило мнение о том, что современная оптимизация С++ вполне может утереть нос старенькому Си
Ты это Стефу покажи, вступи в команду разрабов sgdk, такие люди там нужны, судя по тому, какие у них тулзы.

Оффлайн ALKOSHA

  • Пользователь
  • Сообщений: 773
  • Кищучнëм по-маленькой?
    • ВКонтакте
    • Просмотр профиля
Настройка SGDK
« Ответ #475 : 15 Апреля 2019, 08:42:00 »
Вот бы кто подружил его с TMX-картами размером более 512*512 (1024*256)... да коллизией по ним, хотя бы на уровне супер Марево броуз...

Оффлайн Segaman

  • Пользователь
  • Сообщений: 3204
  • Пол: Мужской
  • Blast Processing!
    • Youtube
    • Просмотр профиля
Настройка SGDK
« Ответ #476 : 15 Апреля 2019, 10:19:15 »
worm, тулзы у них и правда боль, но я буду думать над вступлением.
я вообще недумаю в публику выкладывать наработки :)

Оффлайн Takamura-kun

  • Пользователь
  • Сообщений: 1151
  • Пол: Мужской
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #477 : 15 Апреля 2019, 12:19:25 »
я вообще недумаю в публику выкладывать наработки
это дело сугубо твое личное и ты имеешь на это полное право, но если ты что-то делаешь для себя, почему бы не пустить это на благо общества? Торвальдс тоже не сразу ядро открыл, однако только благодаря этому решению ты сейчас используешь Linux (как и этот самый компилятор, как и раньше использовал крякнутую винду с крякнутыми прогами), а если бы каждый делал только для себя, каким бы был мир?)
Сам же говорил - будущее за открытым ПО, но это будущее может и не настать из-за дефицита адекватного открытого ПО, а дефицит из-за чего? Из-за тех, кто жлобит свои наработки. Не будь одним из них - ты ведь не такой.
« Последнее редактирование: 15 Апреля 2019, 12:35:05 от worm »

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9545
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Настройка SGDK
« Ответ #478 : 15 Апреля 2019, 14:13:53 »
чо за скулеж ? во всех этих хоумбрюшных SDK, для мегадрайвов, гейкубов и прочих дримкастов,  используется обычный GCC.
не устраивает оптимизация более старых версий компилятора ? -> возьмите более новую.
вот только не факт что они будут генерить более лучший код для антикварных моторол, или старых поверписей, говорят не редко бывает и наоборот, потому что на них все давно забили.
« Последнее редактирование: 15 Апреля 2019, 14:25:55 от MetalliC »
***** *****!

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9545
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
Настройка SGDK
« Ответ #479 : 15 Апреля 2019, 14:20:00 »
будущее за открытым ПО, но это будущее может и не настать из-за дефицита адекватного открытого ПО
Free and Open Source Software (FOSS) это бизнес, который целиком и полностью существует за счет платной поддержки продуктов.
ну то есть, разработчики $материально$ заинтересованы чтоб этот весь софт был глючным, или в нём не хватало каких-то фич, и пользователи вынуждены были искать девелоперов которые бы исправили или доделали интересующие их программы.
я надеюсь всем понятно какой вот это всё ^^^ оказывает эффект на качество и юзабельность ПО, и почему имеет место быть напряг с нормальным открытым ПО ?
« Последнее редактирование: 15 Апреля 2019, 14:28:38 от MetalliC »
***** *****!