|
|
|
Канал Игры Мечты: «Техническая помощь в реализации самописных игр» |
|
|
DIMOSUS.X 997 EGP
Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
Например RimWorld сделал один человек — посмотрите рейтинг в стиме
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом. |
|
|
БулерМэн 420 EGP
Рейтинг канала: 2(21) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
xakepx : |
Я так понял, что тут собрались одни Джедаи
|
Не смотря на близость цели - времени много очень пройти может, до результата от желаемого.
Последний раз редактировалось: БулерМэн (02:37 02-04-2017), всего редактировалось 2 раз(а) |
|
|
БулерМэн 420 EGP
Рейтинг канала: 2(21) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
Грустно смотрел на свою попытку сделать сетевую игру и тут меня осенило: а что, если переписать код GML десктопной игры на JS?
Получу тем самым HTML5-based игрушку и плюс набор функций, которые можно вынести в отдельный js-файл, для последующий экспериментов. Ай да я
Конечно, код будет открытым и не таким быстрым как например на flash. Или уже тупо на flash переписать?
|
|
|
DIMOSUS.X 997 EGP
Рейтинг канала: 4(67) Репутация: 188 Сообщения: 3252 Откуда: Vilnius/Minsk Зарегистрирован: 06.08.2008 |
|
Флеш умирает - нет особого смысла что-то делать на нем
_________________ Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом. |
|
|
БулерМэн 420 EGP
Рейтинг канала: 2(21) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
Если браузеры стремятся сделать так, чтобы приложения - были написаны на чем-то, что нативно поддерживает браузер, без плагинов - то получается, что закрытых клиентских приложений не станет?
И тут глобализация...
Последний раз редактировалось: БулерМэн (23:27 18-04-2017), всего редактировалось 1 раз |
|
|
БулерМэн 420 EGP
Рейтинг канала: 2(21) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
Интенсивная трансляция GML-->JS+SVG
Довольно просто получается.
Код: |
room_set_size(200, 300);
draw_set_font('Arial');
draw_text(50,100,"Проверка");
draw_set_alpha(0.4);
draw_sprite('http://www.elite-games.ru/conference/album_pic.php?pic_id=28281',0,50,40)
screen_redraw(); |
результат (кликните здесь для просмотра)
|
По моему неплохо, хотя не уверен что FPS будет высокий.
Кстати, очень положительное отличие от GML: изображение можно остановить и оно никуда не денется т.к. оно "запечено" в SVG.
В общем обрадовала возможность паузы.
добавлено спустя 2 минуты:
Самое забавное в том, что видимо, GameMakerStudio как раз умеет сохранять в HTML5-виде. правда не знаю, что там имеется в виду, может быть тоже самое.
Последний раз редактировалось: БулерМэн (02:14 19-04-2017), всего редактировалось 1 раз |
|
|
Jurec 348 EGP
Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006 |
|
БулерМэн : |
что нативно поддерживает браузер, без плагинов - то получается, что закрытых клиентских приложений не станет
|
ну как это? что такое открытое клиентское приложение? скомпиленый бинарник - открытый или закрытый?
webassembly это как раз бинарник. и он - будущее веба
_________________ MOV topka, C++ |
|
|
БулерМэн 420 EGP
Рейтинг канала: 2(21) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
Jurec : |
скомпиленый бинарник
|
скорее закрытый, и возможно с защитой.
Jurec : |
webassembly это как раз бинарник. и он - будущее веба
|
Возможно. Там говорится про то, что бинарник компилится на стороне клиента?
|
|
|
БулерМэн 420 EGP
Рейтинг канала: 2(21) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
Народ, что-то я никак не пробьюсь через управление в "Space Fiction"...
Игра по ссылке: http://furnitura.bget.ru/game/game_prototype_5.html
Суть проблемы в том, что разворачиваясь на ходу на 180 градусов - и включая тягу - корабль моментально ускоряется в противоположном направлении, то есть нарушая все законы физики.
Чисто концептуально, как реализовать физику в игре с видом сверху?
Я делал через вычисление угла поворота, но проблемы начинаются как раз при вращении корабля в разные стороны при переходе через ноль градусов: поворот не кратен единице, а может быть 2.1, 3.8 и т.д., то есть присутствует ускорение.
|
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Делаешь две сущности. Первая физическая, где X (или Y не важно) будет вектором направления.
Вторая графическая, где X (или Y) будет носом.
Сущности связаны только позицией. Ротация и у одной и другой сущности независимы.
За перемещение отвечает первая сущность, за вектор приложение силы вторая.
При нажатии акселератора берешь значение ускорения (по вектору граф. сущности) и складываешь с физической сущностью. Полученный вектор есть новая физическая сущность. И не надо никаких углов.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (10:35 23-10-2017), всего редактировалось 3 раз(а) |
|
|
БулерМэн 420 EGP
Рейтинг канала: 2(21) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
ТехноМаг : |
За перемещение отвечает первая сущность, за вектор приложение силы вторая.
|
то есть, конкретизируя, есть некий невидимый и видимый для игрока объект. Видимый объект это корабль, он просто поворачивается в разные стороны. Двигается со скоростью и ускорением другой объект, не видимый игроку.
При этом как и представлено в игре - объект o_dummy это невидимый объект, тогда все остальные объекты двигаются в противоположном направлении, которое зависит от этого o_dummy.
ТехноМаг : |
Сущности связаны только позицией.
|
В моем случае корабль игрока стоит на месте и делает вид что летит, а другие объекты двигаются, но делают вид что стоят на месте.
Выкинуть это из игры у меня не получится, т.к. у меня "бесконечная локация", размеры которой ограничены исключительно техническими возможностями протокола HTTP и формата SVG, в котором прописываются значения атрибутов в виде целых чисел координат.
Я может чего-то не понимаю. Но, если я управляю направлением тяги через невидимый объект o_dummy - то поворот по идее по часовой или против часовой - должен соответствовать углу поворота видимого объекта. Собственно поэтому я и поворачивал сразу видимый объект.
Если представить, что я поворачиваю невидимый объект - появляются те же проблемы с четвертями и углами поворота невидимого объекта. Но в случае с видимым кораблем я вижу, что у меня скачок в повороте есть, а с невидимым объектом это будет неочевидно...
Допустим, я делаю как ты предложил, но с некоторыми поправками: невидимый объект болтается в пространстве, и его поворот никак не влияет на поворот корабля. Но, при нажатии на акселератор берется значение ускорения невидимого объекта и направление в градусах самого корабля.
И тут самое интересное: что ты имеешь в виду под "складываешь с физической сущностью"? То есть нужно получить вектор ускорения корабля, то есть найти длину вектора (ускорение корабля+ускорение невидимого объекта) и направление вектора (направление носа корабля+направление невидимого объекта).
Если так, то чем это отличается от текущей реализации кроме того, что видимый объект не двигается по факту, а двигаются другие объекты с его скоростью? Как представленный тобой метод решения задачи исключит моментальное ускорение в противоположном направлении?
|
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Ой вей... Вылези в скайп. Я тебе на пальцах покажу.
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей." |
|
|
Shirson 1605 EGP
Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002 |
|
БулерМэн : |
Народ, что-то я никак не пробьюсь через управление в "Space Fiction"...
Игра по ссылке: http://furnitura.bget.ru/game/game_prototype_5.html
Суть проблемы в том, что разворачиваясь на ходу на 180 градусов - и включая тягу - корабль моментально ускоряется в противоположном направлении, то есть нарушая все законы физики.
Чисто концептуально, как реализовать физику в игре с видом сверху?
|
Да предельно просто.
Корабль обладает параметром скорости. Это вектор, или, если по-простому, две составляющие, dX и dY
Ещё у корабля есть двигатель, который выдяёт некоторый вектор ускорения, который, опять же, по-простому имеет две составляющих - aX и aY
Допустим, за один такт мы просчитываем координаты корабля и скорость корабля (её изменение от ускорения, выдваемого двигателем).
Координаты:
X = X + dX
Y = Y + dY
aX = (a * sin(Alpha))*t
aY = (a * cos(Alpha))*t
dX = dX + aX
dY = dY + aY
где
a - ускорение, которое выдаёт двигатель (численый показатель)
Alpha - Угол, под которым это ускорение прилагается (в твоём случае - направление носа корабля)
t - длительность шага времени. Можно брать 1
X и Y - координаты корабля в пространстве
dX и dY - показатели скорости корабля по горизонтали и вертикали
aX и aY - промежуточные показатели ускорения, по горизонтали и вертикали.
Цитата: |
Я делал через вычисление угла поворота, но проблемы начинаются как раз при вращении корабля в разные стороны при переходе через ноль градусов
|
Значит что-то мудрённое делал "Скрипач не нужен" - т.е. просто успользование угла даёт отличный результат.
Цитата: |
поворот не кратен единице, а может быть 2.1, 3.8 и т.д.
|
Не совсем понятно, какая рахница, есть там дробная часть или нет - косинусы и синусы и так работают с вещественными числами.
Цитата: |
то есть присутствует ускорение.
|
Причём тут ускорение?
Покажи код, а. Так понятнее будет, чего там эдакого
_________________ У меня бисера не доxеpа. |
|
|
ТехноМаг 360 EGP
Рейтинг канала: 2(19) Репутация: 93 Сообщения: 2510 Откуда: Кронштадт Зарегистрирован: 09.04.2007 |
|
Ой, зачем таки синусы и косинусы. Все гораздо проще (при условии, что из спрайта можно вектор. Если там чистый js, то пост Ширсона более подробно объясняет сие действо).
Вот по примеру из последнего поста Буллера.
Берем вектор
dA - который является фактическим ускорением (соответственно весь мир двигается на вектор -dA каждый игровой тик)
и берем вектор
dB - направление которого совпадает с "носом" корабля. Сам вектор единичный.
и некую константу ускорения (опять же Unit/тик).
при нажатии клавиши (читать включение двигателя) мы просто берем и делаем два действия:
1) Умножаем константу ускорения на вектор dB; получаем вектор dC
2) Складываем dA и dC
Полученный вектор и есть наш новый dA
иллюстрация стара как мир
К слову, если я правильно понял, то вот кусок кода (Буллер, не кусай):
Код: |
function motion_set(direction, speed, id, repeat_motion)
{
//alert (id);
// direction - направление движения объекта
// speed - скорость перемещения объекта (пикселей в интервал времени(секунду))
// id - идентификатор объекта в списке объектов
// repeat_motion - определяет, является ли вызов функции задающим повтор движения по таймеру
// 1 - смещение без задания временного интервала, 0 - задать новое смещение с установкой нового интервала
// Аргумент repeat_motion не используется в коде GML и является надстройкой для реализации данного функционала
// Необходимо определять координаты смещения - взять из 3dhelper, сглаживание по радиусу и т.д.
// Нужно брать координаты текущего объекта
// Скорость перемещения это количество пикселей смещения за один цикл.
// Смещение - это длина отрезка между координатами объекта и новыми координатами, определенными по длине отрезка и заданному углу.
// Перемещение объекта происходит постоянно, через:
// -> таймер
// таймер обнуляется при повторном вызове функции motion_set()
// -> без таймера
// Подразумевается, что вызов motion_set бедет производиться на каждом шаге, если параметр motion объекта равен единице,
// Функция не вызывается, если присваивается скорость 0, то параметр motion задается равным нолю.
if(isObject(id))
{
//if(speed!=0)
//{
//alert("Задали движение");
//id.image_angle = direction;
id.speed = speed;
//var motion_timer = setInterval(function()
//{
id.x = id.x + speed*(Math.cos(degtorad(direction)));
id.y = id.y + speed*(-Math.sin(degtorad(direction)));
//}
}
}
|
_________________ (Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
Последний раз редактировалось: ТехноМаг (18:49 23-10-2017), всего редактировалось 4 раз(а) |
|
|
Jerry Rezet 581 EGP
Рейтинг канала: 5(113) Репутация: 86 Сообщения: 3365 Откуда: Санкт-Петербург. Зарегистрирован: 01.04.2005 |
|
Товарищи Пилоты! Помогите, как говорится.
Есть такой хороший портал по OpenGL-урокам с примерами, NeHe.gamedev.net, там можно было скачать уроки практически под все языки программирования, но в последнее время тыкаясь в примеры исходников вылазит коварное "404 Не найдено".. Есть какое-нибудь зеркало или архив, где схоронено искомое? Или я как-то особо криворучно стараюсь и таки исходники доступны, но я что-то не так делаю?
_________________ - Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c] |
|
|
БулерМэн 420 EGP
Рейтинг канала: 2(21) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
Jerry Rezet : |
вылазит коварное "404 Не найдено"
|
ссылку на страницу покажите
_________________ Дулички и фигушки |
|
|
Jerry Rezet 581 EGP
Рейтинг канала: 5(113) Репутация: 86 Сообщения: 3365 Откуда: Санкт-Петербург. Зарегистрирован: 01.04.2005 |
|
БулерМэн : |
Jerry Rezet : |
вылазит коварное "404 Не найдено"
|
ссылку на страницу покажите
|
http://nehe.gamedev5.net/data/lessons/python/lesson01.tar.gz
_________________ - Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
Последний раз редактировалось: Jerry Rezet (19:36 16-02-2018), всего редактировалось 1 раз |
|
|
БулерМэн 420 EGP
Рейтинг канала: 2(21) Репутация: 68 Сообщения: 1580 Откуда: Гороховец Зарегистрирован: 07.02.2006 |
|
к сожалению только два архива сохранилось:
ссылка
Код: |
https://web.archive.org/web/*/http://nehe.gamedev5.net/data/lessons/python/* |
_________________ Дулички и фигушки
Последний раз редактировалось: БулерМэн (00:51 17-02-2018), всего редактировалось 5 раз(а) |
|
|
Jerry Rezet 581 EGP
Рейтинг канала: 5(113) Репутация: 86 Сообщения: 3365 Откуда: Санкт-Петербург. Зарегистрирован: 01.04.2005 |
|
Т.е. NeHe таки накрылось полностью?
_________________ - Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c] |
|
|
Shirson 1605 EGP
Рейтинг канала: 7(626) Репутация: 219 Сообщения: 16511 Откуда: 79°W 44°N Зарегистрирован: 29.01.2002 |
|
Ты нашёл у кого спрашивать
(у хозяев сайта нужно)
https://www.gamedev.net/forums/topic/693025-source-code-downloads-missing/
Всё сорцы тут
https://github.com/gamedev-net/nehe-opengl
по питону тут
https://github.com/gamedev-net/nehe-opengl/tree/master/python
_________________ У меня бисера не доxеpа.
Последний раз редактировалось: Shirson (03:36 19-02-2018), всего редактировалось 3 раз(а) |
|
|
|
|
|
Канал Игры Мечты: «Техническая помощь в реализации самописных игр» |
|