Автор Тема: SGDK  (Прочитано 74536 раз)

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

Оффлайн MetalliC

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

Оффлайн Sharpnull

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

Оффлайн Werton

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

Оффлайн m4x1k

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

Оффлайн Sharpnull

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

Оффлайн m4x1k

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

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

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

Оффлайн Segaman

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

Оффлайн MetalliC

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

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

Оффлайн Sharpnull

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

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

Оффлайн worm

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

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

Оффлайн MetalliC

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

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

Оффлайн worm

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

Оффлайн m4x1k

  • Пользователь
  • Сообщений: 36
    • Просмотр профиля
Настройка SGDK
« Ответ #462 : 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

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

Оффлайн Sharpnull

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

Оффлайн ALKOSHA

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

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

Оффлайн Sharpnull

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

Оффлайн m4x1k

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

Оффлайн Sharpnull

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

Оффлайн ALKOSHA

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

Оффлайн Segaman

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

Оффлайн worm

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

Оффлайн ALKOSHA

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

Оффлайн Segaman

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

Оффлайн worm

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

Оффлайн MetalliC

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

Оффлайн MetalliC

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

Оффлайн worm

  • Пользователь
  • Сообщений: 1078
  • Пол: Мужской
  • Злой тролляка
    • Просмотр профиля
Re: Настройка SGDK
« Ответ #479 : 15 Апрель 2019, 19:49:58 »
разработчики $материально$ заинтересованы чтоб этот весь софт был глючным
но ведь это ложь) многое среди открытого ПО если не превосходит платные аналоги, то уж точно не хуже - тот же qbittorrent vs utorrent, blender vs 3ds max, notepad++ vs edit pad pro и тд. Кроме того, если foss - это сплошные глюки, где тогда скачать исходники глючных релизов десятого шындовса?

я надеюсь всем понятно какой вот это всё ^^^ оказывает эффект на качество и юзабельность ПО, и почему имеет место быть напряг с нормальным открытым ПО ?
напряг заключается в дефиците качественного открытого ПО, а не в его глючности. Разумеется, поделки школьников не в счет - это всего лишь побочный эффект доступности инструментария для всех желающих.

чо за скулеж ?
Ну зачем грубить и оффтопить? Я, конечно, понимаю, что здесь выстроена иерархия по степени дартаньянности, но давайте общаться культурно и по теме)