Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Техническая помощь в реализации самописных игр | страница 11
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 11 из 15
На страницу: Пред.  1, 2, 3 ... 10, 11, 12, 13, 14, 15  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал Игры Мечты: «Техническая помощь в реализации самописных игр»
DIMOSUS.X
 995 EGP


Рейтинг канала: 4(67)
Репутация: 188
Сообщения: 3252
Откуда: Vilnius/Minsk
Зарегистрирован: 06.08.2008
Например RimWorld сделал один человек — посмотрите рейтинг в стиме Улыбка
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Добавлено: 22:49 01-04-2017   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
xakepx :
Я так понял, что тут собрались одни Джедаи

Не смотря на близость цели - времени много очень пройти может, до результата от желаемого.

Последний раз редактировалось: БулерМэн (02:37 02-04-2017), всего редактировалось 2 раз(а)
    Добавлено: 02:25 02-04-2017   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Грустно смотрел на свою попытку сделать сетевую игру и тут меня осенило: а что, если переписать код GML десктопной игры на JS? Гы-гы
Получу тем самым HTML5-based игрушку и плюс набор функций, которые можно вынести в отдельный js-файл, для последующий экспериментов. Ай да я Ой, не могу!..
Конечно, код будет открытым и не таким быстрым как например на flash. Или уже тупо на flash переписать? Подозрение.
    Добавлено: 02:46 18-04-2017   
DIMOSUS.X
 995 EGP


Рейтинг канала: 4(67)
Репутация: 188
Сообщения: 3252
Откуда: Vilnius/Minsk
Зарегистрирован: 06.08.2008
Флеш умирает - нет особого смысла что-то делать на нем
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Добавлено: 09:02 18-04-2017   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Если браузеры стремятся сделать так, чтобы приложения - были написаны на чем-то, что нативно поддерживает браузер, без плагинов - то получается, что закрытых клиентских приложений не станет?

И тут глобализация...

Последний раз редактировалось: БулерМэн (23:27 18-04-2017), всего редактировалось 1 раз
    Добавлено: 23:26 18-04-2017   
БулерМэн
 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 раз
    Добавлено: 02:14 19-04-2017   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
БулерМэн :
что нативно поддерживает браузер, без плагинов - то получается, что закрытых клиентских приложений не станет

ну как это? что такое открытое клиентское приложение? скомпиленый бинарник - открытый или закрытый?

webassembly это как раз бинарник. и он - будущее веба
_________________
MOV topka, C++
    Добавлено: 12:21 19-04-2017   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Jurec :
скомпиленый бинарник

скорее закрытый, и возможно с защитой.
Jurec :
webassembly это как раз бинарник. и он - будущее веба

Возможно. Там говорится про то, что бинарник компилится на стороне клиента?
    Добавлено: 15:53 19-04-2017   
БулерМэн
 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 и т.д., то есть присутствует ускорение.
    Добавлено: 01:33 23-10-2017   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Делаешь две сущности. Первая физическая, где X (или Y не важно) будет вектором направления.

Вторая графическая, где X (или Y) будет носом.

Сущности связаны только позицией. Ротация и у одной и другой сущности независимы.
За перемещение отвечает первая сущность, за вектор приложение силы вторая.

При нажатии акселератора берешь значение ускорения (по вектору граф. сущности) и складываешь с физической сущностью. Полученный вектор есть новая физическая сущность. И не надо никаких углов.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (10:35 23-10-2017), всего редактировалось 3 раз(а)
    Добавлено: 09:49 23-10-2017   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
ТехноМаг :
За перемещение отвечает первая сущность, за вектор приложение силы вторая.

то есть, конкретизируя, есть некий невидимый и видимый для игрока объект. Видимый объект это корабль, он просто поворачивается в разные стороны. Двигается со скоростью и ускорением другой объект, не видимый игроку.
При этом как и представлено в игре - объект o_dummy это невидимый объект, тогда все остальные объекты двигаются в противоположном направлении, которое зависит от этого o_dummy.
ТехноМаг :
Сущности связаны только позицией.

В моем случае корабль игрока стоит на месте и делает вид что летит, а другие объекты двигаются, но делают вид что стоят на месте.

Выкинуть это из игры у меня не получится, т.к. у меня "бесконечная локация", размеры которой ограничены исключительно техническими возможностями протокола HTTP и формата SVG, в котором прописываются значения атрибутов в виде целых чисел координат.

Я может чего-то не понимаю. Но, если я управляю направлением тяги через невидимый объект o_dummy - то поворот по идее по часовой или против часовой - должен соответствовать углу поворота видимого объекта. Собственно поэтому я и поворачивал сразу видимый объект.
Если представить, что я поворачиваю невидимый объект - появляются те же проблемы с четвертями и углами поворота невидимого объекта. Но в случае с видимым кораблем я вижу, что у меня скачок в повороте есть, а с невидимым объектом это будет неочевидно...

Допустим, я делаю как ты предложил, но с некоторыми поправками: невидимый объект болтается в пространстве, и его поворот никак не влияет на поворот корабля. Но, при нажатии на акселератор берется значение ускорения невидимого объекта и направление в градусах самого корабля.
И тут самое интересное: что ты имеешь в виду под "складываешь с физической сущностью"? То есть нужно получить вектор ускорения корабля, то есть найти длину вектора (ускорение корабля+ускорение невидимого объекта) и направление вектора (направление носа корабля+направление невидимого объекта).

Если так, то чем это отличается от текущей реализации кроме того, что видимый объект не двигается по факту, а двигаются другие объекты с его скоростью? Как представленный тобой метод решения задачи исключит моментальное ускорение в противоположном направлении?
    Добавлено: 18:11 23-10-2017   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Ой вей... Вылези в скайп. Я тебе на пальцах покажу.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 18:19 23-10-2017   
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а.
    Добавлено: 18:20 23-10-2017   
ТехноМаг
 360 EGP


Рейтинг канала: 2(18)
Репутация: 93
Сообщения: 2507
Откуда: Кронштадт
Зарегистрирован: 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 раз(а)
    Добавлено: 18:30 23-10-2017   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
Товарищи Пилоты! Помогите, как говорится.

Есть такой хороший портал по OpenGL-урокам с примерами, NeHe.gamedev.net, там можно было скачать уроки практически под все языки программирования, но в последнее время тыкаясь в примеры исходников вылазит коварное "404 Не найдено".. Есть какое-нибудь зеркало или архив, где схоронено искомое? Или я как-то особо криворучно стараюсь и таки исходники доступны, но я что-то не так делаю?
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
    Добавлено: 21:38 15-02-2018   
БулерМэн
 420 EGP


Рейтинг канала: 2(21)
Репутация: 68
Сообщения: 1580
Откуда: Гороховец
Зарегистрирован: 07.02.2006
Jerry Rezet :
вылазит коварное "404 Не найдено"

ссылку на страницу покажите
_________________
Дулички и фигушки
    Добавлено: 01:48 16-02-2018   
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 раз
    Добавлено: 19:36 16-02-2018   
БулерМэн
 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 раз(а)
    Добавлено: 00:51 17-02-2018   
Jerry Rezet
 581 EGP


Рейтинг канала: 5(113)
Репутация: 86
Сообщения: 3365
Откуда: Санкт-Петербург.
Зарегистрирован: 01.04.2005
Т.е. NeHe таки накрылось полностью?
_________________
- Вы не представляете, как вам повезло, что я здесь. Вы об этом еще пожалеете. [c]
    Добавлено: 00:51 19-02-2018   
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 раз(а)
    Добавлено: 03:34 19-02-2018   
Канал Игры Мечты: «Техническая помощь в реализации самописных игр»
На страницу: Пред.  1, 2, 3 ... 10, 11, 12, 13, 14, 15  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Ваша дискуссия оформилась в совершенно определённую тему, которая не вполне соответствует теме этой темы. (делает замечание Dymon)

  » Техническая помощь в реализации самописных игр | страница 11
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18