Суббота, 04 Мая 2024, 11:13

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » Vuvk [537]
Результаты поиска
VuvkДата: Понедельник, 07 Августа 2017, 08:12 | Сообщение # 101 | Тема: Создать простенький игровой мир на Unity2017.1 (с оплатой)
заслуженный участник
Сейчас нет на сайте
b_eat, внешний вид станции есть, но блоков нет? Любопытненько. Могу попробовать вам помочь. Юнити 2017.1 ещё не смотрел, но думаю, что там ничего принципиально нового нет...

Сообщение отредактировал Vuvk - Понедельник, 07 Августа 2017, 08:16
VuvkДата: Четверг, 03 Августа 2017, 21:39 | Сообщение # 102 | Тема: Имперсекий игровой движок- курс на релиз
заслуженный участник
Сейчас нет на сайте
Цитата Kohedlo ()
Думаю будет интересно как некомерческим школьникам

Ух, я прям напрягся.
Честно, не понимаю как можно запрашивать какие-то суммы (весьма неплохие!) за неконкурентоспособный движок, который пилится на дому, когда существуют бесплатные движки с некстген графикой, физикой, сетью и тра-та-та.
Но, так или иначе, пожелаю удачи, потому что движок писать - титанический труд.
И поправьте хотя бы название темы
Цитата

Имперсeкий


Сообщение отредактировал Vuvk - Четверг, 03 Августа 2017, 21:45
VuvkДата: Четверг, 03 Августа 2017, 11:49 | Сообщение # 103 | Тема: Вопрос-Ответ (С)
заслуженный участник
Сейчас нет на сайте
Я просто сравнил нормальный выровненный вариант, который сотворил компилятор с вариантом, если выставить выравнивание в 1 байт.
Цитата

[a000 bbbb]
vs
[abbb b] - выделил позицию байта, если к b обратиться так же, как в первом варианте

Цитата
когда мне нужно выделить память под структуру размером 5 байт, то функция вернет адрес свободной зоны в которую структура может поместиться, в нашем случае - это 16, собственно после этого зона становится не свободной

и после этого оставшиеся 11 байт будут болтаться пустыми и бесхозными? Что-то как-то подозрительно. Пойду дальше учить мат.часть.

Цитата
Не на современных машинах, а компилятор их так представляет, с таким же успехом в другом яп нулевой указатель может быть предствлен в виде более сложной структуры.

Цитата
1.14: Ну а если честно, на какой-нибудь реальной машине используются ненулевые внутренние представления нулевых указателей или разные представления для указателей разных типов?

и в ответ какой-то раритет.
А насчет других ЯП - бог с ними, я же о Си толкую.


Сообщение отредактировал Vuvk - Четверг, 03 Августа 2017, 11:55
VuvkДата: Четверг, 03 Августа 2017, 09:23 | Сообщение # 104 | Тема: Вопрос-Ответ (С)
заслуженный участник
Сейчас нет на сайте
Цитата Xakep ()
в любом случае при обращении к s.a или s.b у тебя будет ссылаться на начало, где лежит эта переменная

так я с этим и не спорю, я говорю, что если бы, то. В общем я на свои два вопроса нашёл ответы:
1 на современных машинах нулевые указатели равны 0, так что можно их каллокать.
2 "также я натыкался на информацию, что malloc выравнивает данные, а calloc нет." - фигня.
VuvkДата: Четверг, 03 Августа 2017, 07:02 | Сообщение # 105 | Тема: Вопрос-Ответ (С)
заслуженный участник
Сейчас нет на сайте
Цитата Xakep ()
Ну я думаю не совсем, malloc просто выделяет тебе непрерывный кусок памяти, сколько скажешь, столько и выделится, что делать с этой памятью дело уже твое

Цитата Xakep ()
эти зоны уже выровненные и когда мне нужно выделить память под структуру размером 5 байт, то функция вернет адрес свободной зоны в которую структура может поместиться, в нашем случае - это 16

Если бы это было так, то запихав "сжатую" структуру в выровненные 8 байт, я бы при попытке доступа к b (поле в example_s) получал бы адрес последнего её байта вместо первого (смотри под спойлер "типа схема" здесь и в предыдущем моем посте)

А то, как поведет себя аллокатор, сильно зависит от его реализации, ага.
Нарыл тут ещё интересную статейку.


Сообщение отредактировал Vuvk - Четверг, 03 Августа 2017, 07:51
VuvkДата: Среда, 02 Августа 2017, 10:35 | Сообщение # 106 | Тема: Вопрос-Ответ (С)
заслуженный участник
Сейчас нет на сайте
Xakep, дык ты прочти цитаты, которые я привел. п.1.14.
Цитата
невыровненные данные могут быть прчиной снижения производительности

Эт я знаю.
За ссылки спасибо.

Сейчас решил сотворить финт ушами. Есть некая структура, к примеру

Берем и выясняем её размер: sizeof(example_s) = 8 байт. Почему? А потому что выравнялись поля в кратное 4 (размер инт):

Потом я говорю компилятору - выравнивание офф!


Берем и выясняем её размер: sizeof(example_s) = 5 байт

А так как, что в маллоке, что в каллоке я указываю размер структуры, а не количество байт, то о каком выравнивании в маллоке и отсутствии его же в каллоке может быть речь? Видимо дезинфо вычитал.


Сообщение отредактировал Vuvk - Среда, 02 Августа 2017, 14:40
VuvkДата: Среда, 02 Августа 2017, 07:05 | Сообщение # 107 | Тема: Для души
заслуженный участник
Сейчас нет на сайте
Цитата puksus ()
стратегия реального времени - САМЫЙ сложный жанр

Цитата EchoIT ()
ММОРПГшеры ... скажут, что этот жанр сложнее

Надеюсь, что у Сандара не комбо ММО+стратегия ;)
VuvkДата: Среда, 02 Августа 2017, 05:54 | Сообщение # 108 | Тема: Вопрос-Ответ (С)
заслуженный участник
Сейчас нет на сайте

Итак, новые дилетантские вопросы от Антона (меня, то есть).
Как я уже отметил в отдельной теме, я пишу игровой движок на чистом Си и имитирую некоторые ООПшные подходы. Вместо классов у меня структуры и я всячески ими манипулирую. Ну так вот. После создания "класса" через malloc на выходе получалась забитая мусором структура и в "конструкторах" я затирал поля в 0. Потом я подумал, что всё это можно заменить одним простым calloc. А позже наткнулся на эту статью, которая подтверждала правильность решения:
Цитата
Никогда не используйте malloc
Привыкайте к calloc. С этой функцией вам не грозит снижение производительности при очистке памяти.

Но также я натыкался на информацию, что malloc выравнивает данные, а calloc нет. И у меня теперь есть некоторые сомнения. На проверяемых компуктерах всё работает исправно, но могут ли быть проблемы на каком-то другом железе или времена процессоров, не умеющих работать с невыравненными значениями, канули в Лету?
Теперь второй вопрос. О нулевых указателях - NULL. NULL определен как (void*)0. Это не математический 0, он преобразуется компилятором в указатель на какую-то область памяти, которая на разных платформах - разная. (Читал в какой-то книге в форме вопрос-ответ по Си. Не могу найти, но ссылку предоставлю позднее). Итак сам вопрос. Вот у меня есть структуры, в которых есть указатели. Я создаю их через calloc(1, sizeof(any_struct)), то в указатель попадёт 0. Но ведь 0 попадёт "математический" и в момент исполнения программы. Как быть уверенным, что этот 0 будет нулевым указателем? Или не будет? Опять же вроде работает, но вдруг на каких-то машинах это работать не будет?
Вот такие вопросы новичка. (начал изучение Си пару месяцев назад, не пинайте, судари)

Добавлено (02 августа 2017, 05:54)
---------------------------------------------
По поводу моего второго вопроса, видимо, на современных компах можно не париться. Я вчера не мог найти, откуда я взял инфу про путаницу с нулевыми указателями, но сегодня нашёл:



Сообщение отредактировал Vuvk - Вторник, 01 Августа 2017, 20:25
VuvkДата: Вторник, 01 Августа 2017, 20:01 | Сообщение # 109 | Тема: Для души
заслуженный участник
Сейчас нет на сайте
Цитата red_odysseus ()
Не делать сайт, сервера и прочую ненужную и пафосную хрень, котрая на начальном этапе только отнимает время и ресурсы. А тупо взять и сделать простейшую игру.

От души.
VuvkДата: Вторник, 01 Августа 2017, 13:38 | Сообщение # 110 | Тема: Для души
заслуженный участник
Сейчас нет на сайте
AlexRabbit,
Цитата Sandar ()

*переедет через пару часов отсюда
http://u92681nq.beget.tech/

А вообще, если за такое ещё и деньги заплачены, то это боль.
VuvkДата: Вторник, 01 Августа 2017, 13:28 | Сообщение # 111 | Тема: Для души
заслуженный участник
Сейчас нет на сайте
AlexRabbit, не то посмотрел. Новый сайт у них здесь
С ворованными из интернета картинками, правда. Но уже приятней, чем предыдущее поделие.
VuvkДата: Вторник, 01 Августа 2017, 13:26 | Сообщение # 112 | Тема: Какой массив будет более оптимизированный?
заслуженный участник
Сейчас нет на сайте
Кто-нибудь объясните мне, что он делает, плез crazy
Цитата
вызывать массив уже mass[i*32]

это работает медленнее, чем mass[32], mass[64] и т.д.
VuvkДата: Вторник, 01 Августа 2017, 10:28 | Сообщение # 113 | Тема: Какой массив будет более оптимизированный?
заслуженный участник
Сейчас нет на сайте
Цитата Vuvk ()
Я чего-то не понимаю?

Цитата ASH2 ()
Или я чего-то не понимаю?

Интернет, задача не ясна. Что вообще ты хочешь сделать?


Сообщение отредактировал Vuvk - Вторник, 01 Августа 2017, 10:40
VuvkДата: Вторник, 01 Августа 2017, 06:01 | Сообщение # 114 | Тема: Какой массив будет более оптимизированный?
заслуженный участник
Сейчас нет на сайте
Тебе нужно 6 ячеек, в котором бы было 32 значения? Так возьми двухмерный массив mass [32, 6] и не пудри мозги! :D Можно запаковать в одномерный, но зачем тебе это?
VuvkДата: Понедельник, 31 Июля 2017, 22:04 | Сообщение # 115 | Тема: Какой массив будет более оптимизированный?
заслуженный участник
Сейчас нет на сайте
Мусор - Неинициализированное значение
VuvkДата: Понедельник, 31 Июля 2017, 21:47 | Сообщение # 116 | Тема: Какой массив будет более оптимизированный?
заслуженный участник
Сейчас нет на сайте
Операция умножения медленная, так что первый вариант будет чуть шустрее. Плюс ты во втором варианте в цикле объявляешь переменную в каждой итерации, что тоже плохо.

Добавлено (31 июля 2017, 21:47)
---------------------------------------------
Я чего-то не понимаю? У тебя получится одномерный массив в обоих случаях вида
0_31 элемент мусора_0_31 элемент мусора_0_31 элемент мусора_0_31 элемент мусора_0_31 элемент мусора_0

Сообщение отредактировал Vuvk - Понедельник, 31 Июля 2017, 21:42
VuvkДата: Понедельник, 31 Июля 2017, 21:34 | Сообщение # 117 | Тема: Какой массив будет более оптимизированный?
заслуженный участник
Сейчас нет на сайте
а в чем соль? Каждый 32-й элемент обнуляется, а промежуточные 31 что делают?
VuvkДата: Понедельник, 31 Июля 2017, 19:39 | Сообщение # 118 | Тема: УРОК: Создание покадровой анимации в Unity3D
заслуженный участник
Сейчас нет на сайте
Хочу только каких-то уточнений. В приведенном в пример Uncharted подозреваю, что анимация MotionCapture+facial motion capture. Поправьте, если это не так.
Ты говоришь, что скелетная анимация - это геморрой. А мне вот кажется, что в точности до наоборот. Особенно в 3D. Взять старые форматы с покадровой анимацией морфингом для игр Quake1-3 (mdl, md2, md3). Вот где геммор-то был! В каждом кадре дёргать отдельные вершины!
VuvkДата: Воскресенье, 30 Июля 2017, 19:54 | Сообщение # 119 | Тема: Курс "накачивания" скилла
заслуженный участник
Сейчас нет на сайте
Как и в любой деятельности:
1. поиск теоретической базы, усвоение (книги, статьи).
2. практика.
3. возврат к пункту 1.
4. практика с применением новых знаний.
рекурсия

Если упёрся в потолок, то попробовать другие техники/стили.
Сужу тоже, как программист.

И, как заметил BrightSpot, практика на реальных задачах предпочтительней.


Сообщение отредактировал Vuvk - Воскресенье, 30 Июля 2017, 19:55
VuvkДата: Воскресенье, 30 Июля 2017, 17:48 | Сообщение # 120 | Тема: Затирание данных перед освобождением
заслуженный участник
Сейчас нет на сайте
Saitei, задача не только быстро искать, но и быстро добавлять/удалять элементы. Так что массив не катит.
giperion, если что-то можно сделать надежнее/быстрее, то почему бы и нет.


Сообщение отредактировал Vuvk - Воскресенье, 30 Июля 2017, 17:48
Форум игроделов » Записи участника » Vuvk [537]
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг