Как более старые игры делали обнаружение коллизий со стенами, этажами и потолками?

Какая платформа? При использовании.NET используйте System.Uri.TryCreate , не regex.

, Например:

static bool IsValidUrl(string urlString)
{
    Uri uri;
    return Uri.TryCreate(urlString, UriKind.Absolute, out uri)
        && (uri.Scheme == Uri.UriSchemeHttp
         || uri.Scheme == Uri.UriSchemeHttps
         || uri.Scheme == Uri.UriSchemeFtp
         || uri.Scheme == Uri.UriSchemeMailto
            /*...*/);
}

// In test fixture...

[Test]
void IsValidUrl_Test()
{
    Assert.True(IsValidUrl("http://www.example.com"));
    Assert.False(IsValidUrl("javascript:alert('xss')"));
    Assert.False(IsValidUrl(""));
    Assert.False(IsValidUrl(null));
}

(Благодаря @Yoshi для подсказки [приблизительно 112])

22
задан Nick Sonneveld 15 July 2009 в 05:14
поделиться

3 ответа

Для игр эпохи NES, о которых вы говорите, все было в 2D. Уже одно это упрощает многие вещи.

Некоторые машины той эпохи (особенно с аппаратными спрайтами, такие как Commodore 64) имели аппаратное обнаружение коллизий. Большинство игр, которые не полагались на аппаратное обнаружение столкновений, использовали бы либо ограничивающую рамку, либо маску совпадения (1-битное растровое изображение спрайта).

В любом случае обнаружение столкновений обычно выполнялось «апостериори», за исключением специальных случаи, как на краю света. В некоторых играх действительно были ошибки, когда слишком быстрое движение при ударе по чему-то могло заставить вас пройти через это. (Фактически, обзоры игр начала 80-х часто комментируют, насколько точным было обнаружение столкновений.)

Для платформеров вы обычно проверяете, является ли персонаж "

19
ответ дан 29 November 2019 в 04:23
поделиться

Здесь есть статья , в которой подробно рассматривается программирование «платформенной игры» Nintendo Entertainment System (NES).

Я не могу правильно погуглил, потому что раньше я не встречал эту статью.

14
ответ дан 29 November 2019 в 04:23
поделиться

Для таких игр, как Super Mario World (SNES), игра сохраняла уровни в формате памяти, что упрощало получение местоположения Марио X / Y, преобразование его в адрес плитки, а затем немедленную проверку плиток вокруг этого адреса. . Поскольку уровни всегда были фиксированной ширины (хотя область, которую вы могли видеть, варьировалась), это упростило управление адресацией, поскольку это всегда было фиксированное смещение от позиции Марио, например, Адрес + 1 для плитки рядом с Марио,

13
ответ дан 29 November 2019 в 04:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: