Gamedev


Ответить в тред Ответить в тред

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
147 38 61

Black Sky Аноним # OP 04/01/18 Чтв 23:15:46 4653031
ONE.mp4 (9007Кб, 640x360, 00:01:30)
640x360
BS1.png (127Кб, 512x512)
512x512
Привет, анон.
Уже где-то месяц делаю небольшую 2D игрушку на C++ и SFML.
Большую часть времени потратил на самописную физику и отладку многопоточности, сегодня, наконец, перешел к графике, а потому решил создать тред-дневник.

Геймплей пока заключается в управлении космическим аппаратом в поле тяжести различных тел. Движение всех тел считается по закону всемирного тяготения, траектории не фиксированные, в отличии от, например, KSP.

Что есть:
1) Базовая физика.
2) Возможность летать на космокорыте.
3) Простенькие визуальные и аудио-эффекты.

План максимум:
1) Сделать хоть что-то играбельное (хотя бы просто физическую головоломку).
2) Написать сюжет, внедрить его в игру в виде .lua-скриптов (соответственно выучить Lua).
3) Перенести физику на GPU, если останусь на PC.
4) Сделать удобный интерфейс и все по максимуму оптимизировать (включает в себя переход на чистый OpenGL), если захочу продолжить на мобилках.


Учитывая, что ЕГЭ не за горами и что я пилю один,
Реальный план:
1) Перенести все основное управление аппаратом с WASD на мышку или тач.
2) Научиться базе C++ за время разработки.
3) Научиться базе CUDA за время разработки.
4) Запилить что-то более серьезное в плане физики.
Аноним # OP 04/01/18 Чтв 23:20:59 4653082
TIMEWARPMINITEST.mp4 (6628Кб, 640x360, 00:00:42)
640x360
В дополнение к плану максимуму:
1) Графика - векторная, flat.
2) Музыка - ambient
3) Сюжет основан на идее об одиноком исследовании космоса.

По физике:
Я много игрался с движком, по этому в нем есть много всякого, что не будет использовано в игре:
1) Электрические заряды и электромагнитные поля.
2) Физика газов.
3) Реализация различных методов численного интегрирования.
Кому интересно, спрашивайте.
Аноним # OP 04/01/18 Чтв 23:28:30 4653103
whiteship.png (11Кб, 512x768)
512x768
На пикче видны мои потуге в Illustrator'е. С графикой, пожалуй, будет труднее всего.
Благо, этот спрайт сжимается до 16 x 11 px и только в таком виде присутствует в игре.
Аноним 04/01/18 Чтв 23:44:40 4653174
>>465308
Прикольно. Можно и вправду сделать интересный паззл про маняврирование в газах и ЭМ-полях.
Аноним 04/01/18 Чтв 23:45:24 4653185
15073975089050.jpg (16Кб, 385x387)
385x387
>>465303 (OP)
>Учитывая, что ЕГЭ не за горами
>ЕГЭ
Аноним 04/01/18 Чтв 23:47:01 4653196
>>465303 (OP)
Уже лучше чем у даркоблядка выглядит
Аноним 04/01/18 Чтв 23:47:54 4653207
image.png (75Кб, 500x461)
500x461
Аноним 04/01/18 Чтв 23:51:03 4653228
>>465303 (OP)
>Уже где-то месяц делаю небольшую 2D игрушку на C++ и SFML.
Мазохист.
>>465308
Из-за того, что центр камеры прикреплен к кораблю, вообще не очень выразительно видно орбитальное движение.
Аноним 04/01/18 Чтв 23:51:36 4653239
>>465317
Там "не", правда, стоит, но учитывая твои слова, я пересмотрю свое отношение к данным фичам.
Аноним 04/01/18 Чтв 23:52:26 46532410
>>465318
Вы все на 500 баллов претендуете, я не понимаю? ЕГЭ - тупейший экзамен, чистое дрочево тестиков.
Аноним 04/01/18 Чтв 23:52:29 46532511
>>465322
Завтра сниму нормальный геймплей с разным крепежом камеры.
Аноним 04/01/18 Чтв 23:53:08 46532612
>>465324
Я в МФТИ хочу, там не ниже 290.
Аноним 04/01/18 Чтв 23:55:23 46532713
>>465326
Жесть, ну удачи, вперед к мечте. Я бы не осилил учебу в МФТИ.
Аноним 05/01/18 Птн 01:24:18 46534214
Земля пухом
Аноним 05/01/18 Птн 01:26:40 46534315
>>465327
Осилил бы. Сложность (и нужность) учебы в МФТИ сильно преувеличены. Но это оффтоп, а потому - до свидания.
Аноним 05/01/18 Птн 03:51:03 46537916
>>465324
Я к тому, что он школота.
Аноним 05/01/18 Птн 03:58:04 46538117
>>465379
>что он школота
И уже превзошёл местную даркоблядь и серёгу с андрющей.
Аноним 05/01/18 Птн 13:45:47 46547318
WARP.mp4 (9924Кб, 854x480, 00:01:49)
854x480
>>465322
>>465325
Ладно, насчет геймплея я, конечно, немного соврал...
На видео показано:
1) Летание (к сожалению, его плохо видно, так как спрайт выхлопа двигателя пока не завезли).
2) Врезание в планеты(?) (упругие шарики).
3) Переключение камеры на ближайшие к курсору тела (только что запилил)
4) Очередной тест точности ускорения времени.
Аноним 05/01/18 Птн 14:30:26 46547919
Выглядит словно ты собрал простенькую сцену на гамаке/конструкте/фазере и сейчас пытаешься наебать гд типа что то там навелосипедил.
Аноним 05/01/18 Птн 14:31:05 46548020
Аноним 05/01/18 Птн 14:39:41 46548121
cd.png (80Кб, 1021x680)
1021x680
>>465479
Если хочется пруфов и есть идеи для пруфов, могу предоставить.
Иначе, в общем-то, даже пофиг. Мне в любом случае хвастаться нечем.
Аноним 05/01/18 Птн 15:14:15 46548922
PK.mp4 (37350Кб, 1280x720, 00:00:35)
1280x720
Неупругие столкновения вместо упругих.
Новая проблема: сильно скачет скорость расчетов при уменьшении количества тел, приходится постоянно палец на кнопке замедления времени держать. Это нехорошо.
Аноним 05/01/18 Птн 16:34:08 46551723
image.png (262Кб, 540x414)
540x414
>>465489
Годно, анончик. Пили дальше. А лучше заливай на github, авось местные кириллы, что-нибудь делать начнут(вряд ли)
Аноним 05/01/18 Птн 18:04:00 46556424
>>465481
Нахуя, рабивать степень на тонну умножений? Оптимизация? Открою секрет, извлечение корня в твоей функции расстояния занимает в тысячу раз больше времени, чем разница по времени между pow(a,12) и aaaaaaa*a...
Аноним 05/01/18 Птн 19:21:13 46559625
>>465564
Спасибо, но все уже подсчитано и учтено до меня:
1) Я не извлекаю корень. Все степени кратны двум, поэтому я просто возвожу квадрат расстояния в половину степени. Это для потенциала 6-12
2) pow рассчитана не только на целые степени (принимает в качестве аргумента double), так что и работает она не быстрее sqrt.
Аноним 05/01/18 Птн 19:24:48 46559926
>>465596
>Все степени кратны двум, поэтому я просто возвожу квадрат расстояния в половину степени
Ебать, ты жесткий.
>pow рассчитана не только на целые степени
Дык напиши свою степень, просто 12 умножений - это просто пиздец.
Аноним 05/01/18 Птн 19:25:09 46560127
>>465599
>просто просто
Нутыпонял
Аноним 05/01/18 Птн 19:46:55 46561428
15085109461780.png (431Кб, 811x1148)
811x1148
95% /gd/ не знают про разложения функций в ряд
98% про быстрый инверсный квадратный корень от Кармака

ИТТ бабушки подавились семками, соскочили с лавок и доёбываются до успешного мимо-абитурьента.
Аноним 05/01/18 Птн 19:53:07 46561629
>>465614
> 98% про быстрый инверсный квадратный корень от Кармака
Хуита начала 90-ых.
Сейчас так писать не следует.
Аноним 05/01/18 Птн 19:54:52 46561730
>>465614
>95% /gd/ не знают про разложения функций в ряд
На 1 семестре проходится.
>98% про быстрый инверсный квадратный корень от Кармака
Бля, ну это мем вообще. Стыдно не знать, если ты считаешь себя разработчиком игр.
Аноним 05/01/18 Птн 20:04:50 46561831
14556381470030.jpg (122Кб, 1146x938)
1146x938
>>465616
>Сейчас так писать не следует.
Аноним 05/01/18 Птн 20:24:03 46562332
>>465481
Как считаешь взаимодействия между кучей тел?Методом Рунге-Кутты?
Аноним 05/01/18 Птн 20:50:07 46564533
cd2.png (40Кб, 830x505)
830x505
>>465623
Ты, наверно, говоришь об экстраполяции координат и скоростей.
Это регулируется. На выбор предоставлены методы
1) Эйлера
2) Эйлера с ускорением
3) Верле-Штермера
4) Бимана
5) Бимана (модификация для лучшего поведения в ЭМ полях).

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


Прикрепленная пикча из старого кода, так что не начинайте новый срач, пожалуйста.
Аноним 05/01/18 Птн 21:07:01 46565134
>>465645
Зачем столько комментариев?
Аноним 05/01/18 Птн 21:11:25 46565235
>>465651
Почему комментарии не на английском?
Аноним 05/01/18 Птн 21:12:30 46565336
.png (1803Кб, 750x1098)
750x1098
Аноним 06/01/18 Суб 13:29:59 46579237
>>465303 (OP)
Как считаешь взаимодействия между n-телами? Допустим есть планета на орбите звезды, и в ещё сторону движется тело, которое в теории должно выйти на орбиту, в таком плане, только объектов в разы больше
Аноним 06/01/18 Суб 14:56:41 46583438
NewtonsLawOfUni[...].png (18Кб, 400x280)
400x280
>>465792
Все пока честно, без упрощений (никаких сфер влияния, замены траекторий коническими сечениями и пр.).
Формула на пикче считается для каждой пары тел (итого N(N-1)/2 вычислений). Далее, для каждого тела: зная силу и массу, считаю ускорение; зная ускорение и время одной итерации (dt), считаю dV и dr (приращения скорости и радиус-вектора). Формулы, по которым считаю dV и dr, можно видеть тут:
>>465645

Чем меньше dt, тем точнее расчеты.
Аноним 06/01/18 Суб 15:00:27 46583539
Аноним 06/01/18 Суб 15:02:07 46583640
18.png (56Кб, 512x512)
512x512
>>465835
Хотя, не, слишком жирно мне два треда посвещать.
Аноним 06/01/18 Суб 15:05:40 46583741
>>465835
Не надо, лучше тут пиши что велосипедишь. Пробовал оптимизировать? Это побольше занимает времени ЦП, чем pow(a,12) ^_^
Аноним 06/01/18 Суб 15:11:39 46583942
>>465837
Я уже сравнительно близок к пределу оптимизации физики (так мне сказали, по крайней мере). Дальше, пожалуй, уже всякие хаки идут, ибо, по сути, я просто в цикле формулы прогоняю. Тут уже только грамотное распараллеливание.

Но:
1) Для игры, где мало тел, уже можно остановиться, ведь все достаточно точно считается даже при десятитысечных таймварпах и более.
2) Для чисто физических симуляций лучше послать CPU куда подальше и считать на GPU.
Аноним 06/01/18 Суб 15:13:47 46584043
>>465837
Забыл еще добавить всякие методы упрощения вычислений за счет уменьшения точности, но это уже не оптимизация.
Аноним 07/01/18 Вск 01:20:15 46602244
Космос в 2д неинтересный, имхо. С приличной симуляцией физики можно было бы побаловаться с какими-нибудь гало-орбитами, или смотреть на прецессию орбиты в гравитационном поле не сферы, а эллипсоида вращения, например. Много интересностей двадэ вырезает, вот.
Аноним 07/01/18 Вск 09:39:35 46604645
>>466022
2D у меня искусственное. Так как все вычисления на векторах идут, я могу просто все векторы на трехмерные поменять и сразу же скомпилировать.

Я специально ввел ограничение на размерность пространства, так как:
1) Управление в трехмерном пространстве не настроить на мышь или тач, а я тут хочу аркадности.
2) Я не могу даже в треугольники на OpenGL, что уж говорить о 3D.
Аноним 07/01/18 Вск 09:50:11 46604746
>>466022
А для прецессии, вроде, все и в 2D работать будет.
Аноним 07/01/18 Вск 18:06:10 46612147
>>466046
> не могу в треугольники
https://learnopengl.com/
Тут всё очень понятно разжевано, вот.
По управлению -- сделай как в KSP сферу направлений, да и всё. Просто интересных орбит в 2д не будет.
Аноним 07/01/18 Вск 20:57:01 46617548
>>466121
>сделай как в KSP сферу направлений
Это даже для клавы неудобно, что уж говорить про тач.
>Просто интересных орбит в 2д не будет.
Пока что только гало-орбит и нет.

>https://learnopengl.com/
Спасибо за руководство. Я думаю, что в будущем никогда не поздно будет перейти на 3D, если действительно окажется скучно.

Сейчас же пока не до этого. Только что начал пилить пробную прогу на CUDA, если получится, добавлю вычисления на GPU в игру как опцию для Nvidia-бояр.
Хотя, может в игре оно и не нужно (разве что только если кому-нибудь не захочется в режиме песочницы из кучи камней запустить формирование планеты). Но мне в любом случае надо это в движке, так как я на нем не только игру пилю.
Аноним 08/01/18 Пнд 00:45:51 46621449
MEMBTEST.mp4 (36973Кб, 1024x720, 00:00:25)
1024x720
Короче, я закончил пока с CUDA. Мне мой прогресс в ней понравился, поэтому я чутка перераспределил время и в следующий раз больше внимания уделю наружностям игры, а не внутренностям (а то тред превращается в смесь /pr/ и /sci/).

Что же на видео? На видео видна примерная разница в скорости моделирования волн на тонкой мембране между CPU и GPU. Сей примерчик запилил дабы разобраться в основах CUDA и просто порадоваться перспективам прироста скорости. Ничего пока еще не оптимизировал (вообще), замерял время тупо на секундомер и характеристики компа выкладывать не буду, ибо это ничуть не бенчмарк, а просто так.

Если кому-нибудь интересно чуть больше:
Белое - мембрана сильно выгнута вверх.
Красное - просто выгнута.
Черное - не выгнута.
Синяя - выгнута вниз.

Что в основе:
https://ru.wikipedia.org/wiki/Волновое_уравнение
Быстрое вычисление дивергенции на сетке:
http://crecs.ru/ru/numlabs2/Wave_index.html
Дальше всё теми же методами:
>>465645
Аноним 08/01/18 Пнд 00:55:55 46621750
FUTURECITYRES.png (95Кб, 1250x2250)
1250x2250
А пока можете попроигрывать с моих "рисунков".

Хотя, нет, это еще не все.
Вопрос к знатокам Иллюстратора.
Поставил через CreativeCloud Illustrator 2017.3.
Вначале работает быстро, потом начинаются тормоза. При этом чем дольше программа работает, тем больше тормозит. Через полчаса тормозит даже палитра: цвет выбирается по пять секунд.
Насколько это нормально?
Аноним 08/01/18 Пнд 04:51:55 46624351
>>466217
>Насколько это нормально?
Очевидно, не очень. Зачем он тебе вообще? У тебя же не очень сложные векторы, можно забить на этот старый кусок говна и рисовать их, например, в фигме.
Аноним 08/01/18 Пнд 16:25:05 46639352
>>466243
Ты про это, что ли?
https://www.figma.com
Выглядит как какой-то WYSIWYG редактор вебстраничек. Я, наверное, ошибся, и ты что-то другое подразумевал.
Аноним 08/01/18 Пнд 17:49:36 46642753
>>466393
Все верно. Нет, это не WYSIWYG для веб-страниц. Это редактор для запилки интерфейсов, типа Sketch. Вся база для работы с вектором там есть, плюс он бесплатный и оче удобный.
Аноним 08/01/18 Пнд 17:54:17 46643354
Аноним 08/01/18 Пнд 17:55:17 46643455
>>466433
Для работы с вектором он не ОЧ. Да и вообще не фонтан.
Аноним 08/01/18 Пнд 17:59:20 46643556
image.png (155Кб, 1250x2250)
1250x2250
>>466434
Для создания чего-то такого хватит с головой, разве нет? Может дело привычки, хз.
Аноним 09/01/18 Втр 12:58:31 46662657
RingsTest.png (281Кб, 1255x719)
1255x719
Первые попытки сделать рандомные кольца. Получилось что-то странное и страшное. Я, вроде как, все запрогал так, чтоб на равном расстоянии от тела кольца были одинаковой интенсивности, а получил какой-то шум, как будто каждый пиксель рандомом считается.

Хотя, я, кажется, даже знаю в чем проблема. Пошел фиксить.
Аноним 09/01/18 Втр 13:01:22 46662858
WTF.png (9Кб, 190x57)
190x57
>>466626
На пикче, кстати, можно наблюдать весьма загадочное явление - кольца внутри колец. Таких штук появляется от пяти до десяти. Я вообще не понимаю, что это такое и как так получается, что они тоже круглые.
Аноним 09/01/18 Втр 14:16:37 46666659
Cassini1.jpeg (1036Кб, 1707x2560)
1707x2560
Хотелось бы такие кольца, конечно...
Аноним 09/01/18 Втр 19:51:27 46677160
>>465303 (OP)
1. Какие начальные скорости использовал? Подбором?
2. Все делал пропорционально пиксель=расстояние(пренебрегая размерами объекта), или просто подкорректировал константы типа гравитационной?
Аноним 09/01/18 Втр 20:23:54 46679661
string.png (2Кб, 497x16)
497x16
cd4.png (3Кб, 235x80)
235x80
>>466771
>1. Какие начальные скорости использовал? Подбором?
Ты про ту мини-звездную систему? Считая, что масса звезды велика в сравнении с массами планет (а так и есть, они отличаются на три-четыре порядка), считал скорости для круговых орбит (первая картинка). В конце генерации всей системы еще добавлял немного доп. скорости всем телам, чтоб ЦМ системы на месте стоял.

>2. Все делал пропорционально пиксель=расстояние(пренебрегая размерами объекта), или просто подкорректировал константы типа гравитационной?
Никаких пропорций пока нет. Все константы и размеры я выбрал как степени двойки (1, 2, 4, 8 и т.д.) просто из личных предпочтений. Если что-то надо будет согласовать с реальностью, то достаточно будет все константы сделать как в реальности в нужной системе единиц (например, СИ) и пиксели автоматом превратятся в метры, единицы массы - в килограммы и т.д.
Вторая картинка - все используемые и часть неиспользуемых констант.
Аноним 09/01/18 Втр 20:35:58 46680062
Вообще, рано или поздно все придется перемасштабировать, чтоб было что-то похожее на это по размерам:
http://joshworth.com/dev/pixelspace/pixelspace_solarsystem.html

Это у меня пока все такое гигантское, чтоб всякие кольца да градиенты дебажить. Сейчас радиусы некоторых планет даже больше, чем их условная сфера влияния.
Аноним 09/01/18 Втр 22:39:33 46683963
Rings1.png (218Кб, 1266x720)
1266x720
Rings2.png (196Кб, 1266x718)
1266x718
Аноним 13/01/18 Суб 18:33:27 46754464
GASGIANT.png (227Кб, 1280x720)
1280x720
GASGIANTR.png (81Кб, 1280x720)
1280x720
Еще поковырялся в графике.
1) Улучшил качество и скорость рендера колец. Теперь они чуть больше похожи на реальные, и не так видны пиксели при зуме (хотя все равно есть определенный предел, см. третье видео).

К сожалению (или к счастью), уже уперся в максимальный размер текстуры, и поэтому собираюсь кольца да свечение рендерить в динамическом качестве (зависящем от зума) и не полностью, а только как сегмент круга, вращая его так, чтобы он всегда был полностью в камере.

2) За пять минут сделал тень и спрайт планеты (нагло украденная у НАСА текстура Сатурна, свернутая в блин). К сожалению, видео плохо передают цвета, поэтому прикрепил еще и скриншоты.
Аноним 13/01/18 Суб 18:35:07 46754565
>>467544
Класс просто. Не Двач, а сказка.
Капча становится невалидна к моменту окончания загрузки видоса. Обожаю.
Аноним 13/01/18 Суб 18:40:34 46755066
>>467546
Лель.
Я же еще ничего особо-то не сделал.
Аноним 13/01/18 Суб 23:31:29 46761867
GASGIANT3.mp4 (9371Кб, 1280x720, 00:00:06)
1280x720
Аноним 14/01/18 Вск 03:21:11 46765268
Ты умничка, продолжай в том же духе.
Я уже универ закончил, но половины этой хуйни не знаю даже (хотя не особо и хотел когда-то, но скоро наверстаю).
Аноним 14/01/18 Вск 16:56:02 46774569
>>465303 (OP)
Хотел-бы заняться на добровольной основе музыкой и аудио.
Аноним 14/01/18 Вск 17:12:32 46774970
>>467745
Чего умеешь?
Покажи.
Аноним 14/01/18 Вск 18:26:42 46779771
2ksaturn.jpg (195Кб, 2048x1024)
2048x1024
>>467745
ОП на связи.
С музыкой я уже примерно определился: хочу использовать работы 3six, многие из них бесплатны и, вроде, проблем с авторскими правами не будет, если я просто упомяну композитора. Если напишешь хорошую музыку и разрешишь её использовать, ничего не буду иметь против её добавления в игру.
https://youtu.be/vxvTddIzVFE

Проблемы пока только со звуками. Я в этой области умею только качать всякие библиотеки звуковых эффектов и не более. Тут уже твоя помощь будет неоценима, особенно если ты умеешь делать звуки работы двигателей (которые, скорее всего, будут не химические, поэтому для них звуки фиг достанешь), звуки стыковки, ударов о космическую пыль и пр.
Аноним 16/01/18 Втр 20:44:55 46858872
какхочется.webm (2028Кб, 700x392, 00:00:28)
700x392
>>467749
>Чего умеешь?
>Покажи.
Аноним 17/01/18 Срд 09:08:16 46867573
>>465473
Описал бы в тредике, что и как ты там пилишь. Например, как глоу реализован, как физику считаешь. Потом можешь в блогпост перепилить.
Аноним 17/01/18 Срд 09:10:24 46867674
>>465596
>pow рассчитана не только на целые степени (принимает в качестве аргумента double), так что и работает она не быстрее sqrt
Ээ... Вот только ты забыл, что сейчас 20!8, и компиляторы оптимизируют и инлайнят вызовы типа pow(x, n), где n - компайл-тайм константа. Так что на скриншоте у тебя эталонный говнокод, да.
Аноним 17/01/18 Срд 10:18:41 46868675
300k.webm (916Кб, 850x478, 00:00:11)
850x478
>>468676
>и компиляторы оптимизируют и инлайнят
Аноним 17/01/18 Срд 15:45:49 46880976
>>468675
Я отвечаю на все тематические вопросы, что мне задают. Про физику уже написал много, если интересует что-то еще, спрашивай.
Про свет:
Интенсивность пикселя обратно пропорциональна квадрату расстояния до центра (r). Там, где интенсивность больше 255, все заполняется белым (255). Где меньше 0.5 - прозрачным. Как входной параметр задается радиус белой области (R0).

Y = 255 x (R0 / r)2
И еще те условия на макс. и мин. интенсивность.

>>468676
Я уже писал по этому поводу. Могу повторить вкратце:
Использую MS VS 15.
Дизасм и профилирование показало, что в том участке кода ничего не оптимизируется (из того, о чем мы говорим). Впрочем, это ведь очевидно, так как pow() принимает в качестве степени переменную типа double независимо от того, насколько качественно скомпилирована программа. А возведение в вещественную степень не быстрее извлечения квадратного корня.
Аноним 17/01/18 Срд 20:44:21 46892877
>>468809
>качестве степени переменную типа double независимо от того, насколько качественно скомпилирована программа
Ты не понимаешь, как работают оптимизирующие компиляторы.
Аноним 17/01/18 Срд 23:10:17 46896278
>>468928
Согласись, что программист может использовать в функции некоторые "хаки" или "магические константы", работающие только для определенного типа входных данных. Например, тот же самый быстрый квадратный корень. Если компилятор "насильно" заставит функцию работать с входными данными другого типа, то все сломается. В реале все сломается даже без хаков в силу того, что одни и те же операторы дают разный результат для разных типов (деление целых чисел дает целое, вещественных - вещественное).

Единственный вариант заставить заточенную под один тип функцию работать с другими типами так, как хочется - честно переписать. Насколько я понял, pow() использует взятие логарифма и экспоненцирование, заточенное под быструю работу с набором команд x86. Тут могу, конечно, ошибаться, но суть все равно остается та же: ни один компилятор это не переделает в цикл с умножением. Значит, и работать это быстрее не будет, что я и наблюдаю.


Возможно, я в корне ошибаюсь. В таком случае, буду рад узнать,
>как работают оптимизирующие компиляторы.
в моем случае.
Аноним 18/01/18 Чтв 01:48:00 46897479
Аноним 18/01/18 Чтв 08:58:17 46898580
Аноним 18/01/18 Чтв 09:43:27 46899481
>>468962
>ни один компилятор это не переделает в цикл с умножением.
False.

Ну, точнее цикл тут не нужен, так что технически верно, но ты не это имел в виду.
Аноним 18/01/18 Чтв 10:04:06 46899882
>>468994
Для того, чтоб оптимизировать цикл и превратить его в цепочку умножений, нужно сначала оптимизировать логарифм и экспоненту в цикл. Этого компилятор не сделает. Значит, и цепочки умножений не будет.
Иначе говоря, никаких оптимизацией из разряда целочисленного pow() не будет, пока, собственно, pow() не станет целочисленным, что может устроить только программист.

Если ты не про это, то я уже не знаю, про что.
Аноним 18/01/18 Чтв 10:14:29 46899983
Малаца оп. Продолжай, интересно наблюдать.
Аноним 18/01/18 Чтв 11:59:35 46904084
>>468998
Дебил ты ебаный, pow(x,n) переводится в x...x для целочисленных литеральных n, сколько еще раз надо это написать
Аноним 18/01/18 Чтв 15:38:19 46913285
>>469040
Хорошо, я решил еще раз изучить эту проблему.
Ссылка на аналогичный вопрос и бенчмарк:
https://www.quora.com/In-C-C++-is-there-any-performance-difference-to-compute-x-4-by-using-pow-x-4-or-xxxx-For-example-x-is-a-double-floating-number

На самом деле таких замеров куча, я просто взял один из самых недавних (конец 2017)


Прогнал код из верхнего ответа у себя с максимальными параметрами оптимизации по скорости (+ /fp:strict, хотя он, вроде, ни на что не повлиял):
x = 0.1, n = 4

std::pow(x, n)
Took 716.273 ms, error: 0

xxxx
Took 30.0069 ms, error: 1.35525e-20

tmp=xx; tmp
tmp
Took 31.4583 ms, error: 2.71051e-20

tmp=(long double)xx; tmp*tmp
Took 29.9972 ms, error: 2.71051e-20


Тут следует заметить две вещи:
1) "Ошибка" может сильно скакать с изменением тестируемого основания. Время же от этого не зависит.
2) У Microsoft double и long double идентичны, так что последние два теста - одно и то же.

Как видно, ничего тут не оптимизируется. А еще видно то, о чем я писал: pow(x, 4) и цепочка умножений xxxx дают разные результаты (error разный).

Пожалуй, я закрываю этот вопрос. Надоело уже вокруг одной строчки кода топтаться. Тем более все, что мне о ней пишут - какие-то общие мысли без доказательств.


P.S. Пока писал, решил проверить для n = 2. Тут pow() действительно заменяется умножением.
https://www.reddit.com/r/cpp/comments/70tl51/c11_performance_tip_when_to_use_stdpow/dn5t75w/

Мои замеры:
std::pow(x, 2)
Took 35.7014 ms, error: 0

xx
Took 35.8977 ms, error: 0


Однако, уже для pow(x, 3) скорость снова падает примерно в 20 раз.
std::pow(x, 3)
Took 719.445 ms, error: 0

xxx
Took 36.0844 ms, error: 0

https://www.reddit.com/r/cpp/comments/70tl51/c11_performance_tip_when_to_use_stdpow/dn6nctu/
Аноним 18/01/18 Чтв 15:40:13 46913386
>>469132
>...or-xxxx-For...
Тут должны быть звездочки между x.
19/01/18 Птн 12:31:08 46945987
Аноним 19/01/18 Птн 14:46:08 46951288
>>469459
Прочитай, пожалуйста, еще раз:
>>469132

Можешь еще на ту самую строчку кода взглянуть, ведь там вовсе не в квадрат возводится.
Аноним 21/01/18 Вск 14:32:31 47010389
Аноним 22/01/18 Пнд 07:38:04 47032290
>>470103
Да.
Правда, его ещё, как такового, нет.
Просто рисуются тела и не более.
Аноним 22/01/18 Пнд 08:38:02 47032491
Впечатляюще. А игровая составляющая планируется?
Аноним 23/01/18 Втр 17:31:39 47071792
huygens.webm (9295Кб, 320x240, 00:04:40)
320x240
space3.jpg (134Кб, 1920x1080)
1920x1080
>>470324
Конечно.
Вообще, если рассматривать чисто геймплей, то все будет сводится к полету куда надо за минимально возможное количество топлива.

Планирую сделать песочницу. Минимум одна полуслучайная звездная система с полной свободой выбора, куда лететь и что делать. В распоряжении будет что-то вроде очень навороченного космического корабля, на борту у которого есть челноки для сбора топлива и материалов.

Предполагается, что материалы будут нужны для починки корпуса корабля (если потребуется) и для создания ненаукомеких деталей и корпусов для различных исследовательских зондов. Наукоемких деталей будет ограниченное количество. Топливо, что очевидно, используется для полетов.

Материалы, скорее всего, будут собираться с астероидов. Топливо черпается с газовых гигантов (будет минимум один). Двигатели, скорее всего, будут термоядерными.


Конечная цель - исследовать всю систему, насажать зонды на планеты, навыводить спутники на орбиты, составить карты, узнать составы атмосфер, океанов и пр.


Но это все очень примерно, я до твоего вопроса сильно не задумывался над геймплеем. Скорее всего, все еще не раз поменяется. Или уточнится, а то тут только общие идеи.
Аноним 31/01/18 Срд 15:18:28 47212493
46.png (86Кб, 512x512)
512x512
bump
15/02/18 Чтв 02:49:23 47633394
Оп соснул
Аноним 20/02/18 Втр 07:47:27 47806795
Але, блять, бамп.
Аноним 20/02/18 Втр 09:29:47 47807796
>Учитывая, что ЕГЭ не за горами и что я пилю один
Видимо ОП готовится к ЕГЭ
Аноним 20/02/18 Втр 20:10:43 47826897
DIP.mp4 (4991Кб, 960x540, 00:00:29)
960x540
MANY.mp4 (10536Кб, 960x540, 00:00:09)
960x540
>>478077
В целом, это можно назвать и так.
В свободное время больше занимался именно движком. В основном игрался с диполями (п1) и моделями реального вещества. Также пытался сделать быструю симуляцию вещества, состоящего из гранул (п2).

Еще чутка поковырял тени и изменил порядок отрисовки слоев, чтобы было красивее. В остальном все.

Тред почти утонул, лол.
Аноним 21/02/18 Срд 21:19:16 47864798
Аноним 21/02/18 Срд 21:38:10 47865199
>>478647
В четыре раза меньше, чем на твоем видео. Но muzkaw использовал более продвинутый метод обнаружения столкновений - spacial hashing. Я же просто запоминал, кто с кем столкнулся на прошлом шаге. Если будет время, пойду дальше в этом направлении. Но пока в приоритете космос.
Аноним 21/02/18 Срд 21:41:59 478652100
>>478651
Точнее, не в 4 раза меньше, но ФПС у меня 60, а не 150, как у Muzkaw. Короче, у меня 4000 тел на 60 фпс.
Аноним 21/02/18 Срд 23:05:59 478668101
>>478268
Что нужно знать кроме програмирования чтобы такое делать? Математику , физику?
Аноним 21/02/18 Срд 23:08:45 478669102
>>465303 (OP)
Писал топ ДАУН шутер на С++ и SFML, потратил дохуя времени и еле-еле получил играбельную демку. Забил хуй и сейчас делаю игры на юнити, что и тебе советую.
Аноним 21/02/18 Срд 23:12:28 478671103
>>478669
Если ты знаешь С++ то почему не делаешь игры на UE4?
Аноним 21/02/18 Срд 23:14:37 478672104
Noise1.jpg (275Кб, 700x525)
700x525
>>478668
Честно скажу, я не знаю. Я даже не совсем понимаю вопроса, ведь от физики тут только формулы для сил и второй закон Ньютона. Большую часть времени (~80%) у меня занимает именно программирование (отчасти это из-за навелосипеденной многопоточности). Физика, пожалуй, нужна больше для того, чтоб реально получать удовольствие от симуляций, чтоб были идеи, что симулировать.

Мои знания чуть выше 11 класса. Физику я учу углубленно, математику только как придаток к ней.
Аноним 21/02/18 Срд 23:17:13 478673105
>>478671
Пытался сначала на уе4 вкатиться, но почти не нашел нормального обучающего материала, да и он не заточен под 2д игры, которые я делаю, . В отличие от юнити у которого есть как и 3д так и 2д компоненты. + начал учить юнити, потому что где-то прочитал, что с него легче на уе4 вкотиться, да и после шараги, в которой учил кресты, я на них забил и начал учить шарп. Все звезды встали в ряд, короче
Аноним 21/02/18 Срд 23:17:31 478674106
image032.png (11Кб, 643x321)
643x321
>>478672
>Я даже не совсем понимаю вопроса
Я имел виду ты же брал готовые формулы из книг по физике как на пикче и внедрял в свою программу?
Аноним 21/02/18 Срд 23:17:38 478675107
>>478669
На Юнити нет CUDA. И нет нормального интерпретатора lua. И не охота учить шарп, особенно в 11 классе и в вузе, когда времени крайне мало. И вообще, зачем из пушки по воробьям?

И вообще, я не ориентирован на конечный продукт, о чем в первом посте и написал. У меня слишком мало времени для этого.
Аноним 21/02/18 Срд 23:18:41 478676108
>>478674
Брал готовые формулы, но с пониманием, откуда они и почему именно такие.
Аноним 21/02/18 Срд 23:19:03 478677109
>>478669
>sfml
>дохуя времени
это нужно специально постараться
Аноним 21/02/18 Срд 23:21:28 478679110
>>478677
Затеял, как обычно бывает, сделать первую игру неебически большой. В итоге жиденько обосрался.
Аноним 21/02/18 Срд 23:25:26 478682111
Noise3.jpg (48Кб, 350x262)
350x262
Кстати, тут один анон спрашивал про то, буду ли я выкладывать все это на гитхаб. Я тут решил вернуться к этому вопросу и поэтому спрашиваю вас, есть ли в этом смысл? По идее, это только трата времени на залив апдейтов, вряд ли кто-то будет ковыряться в моем говнокоде ради с целью его улучшения. Короче, как это вообще работает на двачах? И зачем?
Аноним 21/02/18 Срд 23:26:08 478684112
>>478682
>ради с целью
*с целью
Аноним 21/02/18 Срд 23:28:03 478686113
>>478682
Хотят посмотреть на то, как ты реализовывал какие-то функции и поучится мудрости.
Аноним 23/02/18 Птн 23:07:18 479429114
>>478675
В шаражке у тебя времени куча будет, не беспокойся, полностью отдашься своему делу и воссоединишься с вселенной.
Аноним 23/02/18 Птн 23:09:13 479431115
>>478682
Петя из 9 класса хочет посмотреть как писать пограммы
Аноним 24/02/18 Суб 18:40:28 479671116
>>479429
>В шаражке у тебя времени куча будет
Ох ты лол блять. Ну в шаражке, наверное, да. Но в более-менее тех. вузах ДС-1/2 свободного времени до 5 семестра не больше, чем в школе.
Аноним 24/02/18 Суб 18:46:58 479673117
>>479671
> чем в школе.
Глупо выразился. Чем в 11 классе, когда помимо школы 100500 репетиторов и постоянная самоподготовка.
Аноним 24/02/18 Суб 19:13:58 479689118
SCR.png (44Кб, 1274x718)
1274x718
PERIODS.png (104Кб, 935x514)
935x514
Времени не прибавилось, поэтому пока исправляю ошибки и немного ковыряюсь в графике.
Добавил всяких полезных астрономических функций. Теперь, зная расстояние между телами, их скорости и массы, могу находить полуоси орбит, периоды, сферы влияния, сферы действия, сферы Хилла. Это нужно для генерации реалистичных и, главное, стабильных звездных и планетарных систем. Особенно важна сфера Хилла. Вне ее у планеты не может существовать стабильных спутников.

Первая картинка - просто снимок экрана одной из простеньких звездных систем, вторая пикча - колебания орбитальных периодов трех массивных (10-3 массы звезды, примерно как Юпитер к Солнцу) планет с течением времени. Как видно, колебания гармонические и в среднем орбиты с целым отношением периодов обращения стабильны.

Нашел классный эмбиент - ЭМ-фон планет, переведенный в аудио-сигнал. Звучит круто и атмосферно, ИМХО. Я бы даже сказал, криповато.
https://youtu.be/oWTC7P1Dprw
https://youtu.be/X_JAvVjKeWI

>>479671
Я тоже думаю, что если в хороший ВУЗ поступлю, то свободного времени будет мало.
Аноним 27/02/18 Втр 15:47:50 480774119
Аноним 27/02/18 Втр 16:54:40 480814120
15196730085460.jpg (33Кб, 400x400)
400x400
>>465303 (OP)
Ебать, Артёмка. Ты уже сам движок написал и тред на гдаче сделал? Я в ахуе.
Аноним 27/02/18 Втр 17:04:56 480816121
>>480814
Это какие-то локальные мемы?
Аноним 27/02/18 Втр 17:23:01 480820122
>>480816
Нет, я просто отчим его.
Аноним 27/02/18 Втр 18:56:10 480840123
>>480820
Очевидно, ОП - не Артемка.
Аноним 28/02/18 Срд 18:37:55 481193124
>>480840
Это кому оно очевидно?
Аноним 01/03/18 Чтв 22:19:14 481779125
DP.png (59Кб, 1212x819)
1212x819
cd4.png (3Кб, 235x80)
235x80
Я ОП и я официально и при свидетелях заявляю, что я не Артемка.
Аноним 02/03/18 Птн 01:01:13 481903126
Аноним 04/03/18 Вск 16:23:25 482660127
>>481903
Пруфы того, что Артемка?
Аноним 04/03/18 Вск 21:05:31 482719128
>>482660
Ну ты определись уже.
Аноним 08/03/18 Чтв 08:43:59 483850129
Аноним 11/03/18 Вск 17:32:04 485025130
Bump
Аноним 11/03/18 Вск 17:39:31 485027131
бумп
12/03/18 Пнд 01:54:06 485296132
оп-соснул
Аноним 12/03/18 Пнд 08:39:57 485421133
>>485296
Что ты тут уже во второй раз забыл?
12/03/18 Пнд 15:22:12 485548134
>>485421
То, что оп-соснул.
Аноним 16/03/18 Птн 22:45:01 487749135
Не Тони.
16/03/18 Птн 22:48:50 487753136
Аноним 17/03/18 Суб 11:26:06 487853137
sage Аноним 17/03/18 Суб 12:09:15 487864138
Ого, очередная хуета, ничего себе, молодец, оп, продолжай в том же духе, еще советую попробовать выпилиться.
Аноним 29/03/18 Чтв 15:39:32 492886139
>>478268
Почему близкие диполи отталкиваются?
Аноним 21/04/18 Суб 17:02:20 496778140
>>492886
Экспоненциальное отталкивание из-за перекрытия электронных оболочек. На самом деле, в этом видосе особого физического смысла нет, просто тестил стабильность расчетов.
Я надеялся, что тред утонул...
Аноним 26/04/18 Чтв 17:54:35 497366141
>>478268
Очень круто, прям кристаллизация.
04/09/18 Втр 01:39:03 525688142
Оп соснул!
Аноним 15/01/19 Втр 12:47:47 545960143
Аноним 15/01/19 Втр 16:28:31 546000144
>>545960
Ебать, Оп уже не школьник! Пёрнул тебе в лицо
Аноним 15/01/19 Втр 20:02:41 546071145
>>465645
>switch в методе для интеграции
Ебать ты додик, про branch misprediction не слышал? Вообще не должно быть ветвлений в таком коде, если хочешь получить нормальную производительностью
Аноним 15/01/19 Втр 20:05:06 546074146
>>466217
>Вначале работает быстро, потом начинаются тормоза. При этом чем дольше программа работает, тем больше тормозит.
Скорее всего, ты поставил пиратку с майнером.
Аноним 15/01/19 Втр 20:07:48 546080147
>>468809
>что в том участке кода ничего не оптимизируется
А ты какую сборку дизасмил-то, не дебажную случаем?
Аноним 15/01/19 Втр 20:46:22 546105148
POT.png (18Кб, 570x305)
570x305
>>546071
Это вариант функции для дебага, с возможностью менять методы интегрирования на ходу. Для конкретных задач пишется отдельная функция, где есть только то, что будет использоваться, без ветвлений и вызова других функций.

>>546074
Проблема уже решена но, тем не менее: нет, качал официально через CreativeCloud. Баг был уже в 14-дневном демо-режиме. Так и снес, не крякнув.

>>546080
Релиз с максимальными настройками оптимизации времени выполнения.
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Топ тредов
Избранное