Пятница, 29 Ноября 2024, 11:27

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
VuvkДата: Понедельник, 17 Июля 2017, 11:28 | Сообщение # 141 | Тема: Для души
заслуженный участник
Сейчас нет на сайте
Цитата EchoIT ()
агришься на обычную критику

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

Цитата EchoIT ()
понимаешь, он просто вроде бы взрослый человек, который и вести себя, в силу своего возраста, должен адекватно. Зачем так остро реагировать на всяких школьников (условно) с форума?

Со всем согласен.
VuvkДата: Понедельник, 17 Июля 2017, 11:24 | Сообщение # 142 | Тема: Alarm и его применение в столкновении
заслуженный участник
Сейчас нет на сайте
Чего куда поставить? У тебя в будильнике это должно остаться:
Цитата Reker ()

в Alarm[0]
hp-=10;

в Create
canPlayerDamage = false;
VuvkДата: Понедельник, 17 Июля 2017, 11:11 | Сообщение # 143 | Тема: Alarm и его применение в столкновении
заслуженный участник
Сейчас нет на сайте
Цитата ASH2 ()
уменьшение количества вычислений в шаге сомнительно, так как он сам-то как-то должен свои будильники обсчитывать...

Это уже внутренняя реализация гамака, которая однозначно быстрее будет работать скриптов, которые ты пишешь.
Цитата ASH2 ()
в Create delta = fps/room_speed; не пойдёт

ну ОК. Но будильники всё равно кошерней


Сообщение отредактировал Vuvk - Понедельник, 17 Июля 2017, 11:13
VuvkДата: Понедельник, 17 Июля 2017, 11:09 | Сообщение # 144 | Тема: Alarm и его применение в столкновении
заслуженный участник
Сейчас нет на сайте
Reker, это переменная-счетчик. Так он имитирует будильник.

Добавлено (17 июля 2017, 11:09)
---------------------------------------------
И кстати тогда хотя бы так сделать:
в Create
Код

nTimer = 0;
delta = fps/room_speed;  // для сокращения количества постоянных расчетов

в Step
Код

nTimer += delta;
if (nTimer >= room_speed)
{
  hp -= 10;
  nTimer -= room_speed;  // для равномерного хода
}


Сообщение отредактировал Vuvk - Понедельник, 17 Июля 2017, 11:11
VuvkДата: Понедельник, 17 Июля 2017, 11:02 | Сообщение # 145 | Тема: Помогите найти ошибку
заслуженный участник
Сейчас нет на сайте
что это за ад вообще?

В этом месте что ты хочешь увидеть - проверку двух условий или у тебя присвоение по условию слева? Нафига тогда открывающая скобка?
Код
if (sprite_index=SprLeft)(sprite_index=mSprLeft)

VuvkДата: Понедельник, 17 Июля 2017, 10:54 | Сообщение # 146 | Тема: Alarm и его применение в столкновении
заслуженный участник
Сейчас нет на сайте
Мое знакомство с GM закончилось на 8 версии, но...
При входе в столкновение проверять какую-то переменную:
Код

if (!canPlayerDamage)
{
  alarm [0] = room_speed;
  canPlayerDamage = true;
}

А при выходе из столкновения:
Код

canPlayerDamage = false;
alarm[0] = -1;

ASH2, предпочтительней использовать будильники, сокращая количество вычислений в шаге. /* могу наврать, но по логике вещей оно так */


Сообщение отредактировал Vuvk - Понедельник, 17 Июля 2017, 10:55
VuvkДата: Понедельник, 17 Июля 2017, 10:29 | Сообщение # 147 | Тема: Затирание данных перед освобождением
заслуженный участник
Сейчас нет на сайте
Цитата Otinagi ()
использование всяческих ООП-механизмов не думаю, что хорошо для Си

Без них разработка игр превращается в целую эпопею. Хотя и с ними не всё так гладко )

Цитата Otinagi ()
Ещё и с NULL надо быть внимательным. В некоторых стандартах для систем с повышенной отказоустойчывастью советуют после освобождения памяти или создании указателя ручками ещё указателю NULL присваивать, иначе проверка на NULL может потом не сработать.

Делаю это всегда. Без этого в моем проекте никак...

Цитата Otinagi ()
у MISRA-C много заметок по динамической работе с памятью

За наводку плюсик однозначно.

Добавлено (17 июля 2017, 10:29)
---------------------------------------------

Цитата Otinagi ()
У меня было нечто вроде списка задач, и это было сделано как массив структур

Думаю, что для списка надо было реализовать список, а не массив использовать. Это бы решило ряд проблем.
VuvkДата: Понедельник, 17 Июля 2017, 06:04 | Сообщение # 148 | Тема: Для души
заслуженный участник
Сейчас нет на сайте
EchoIT, пообщался я с ним "вживую" в ТС и на удивление это оказался вполне себе обычный человек, наивный в чем-то, но всё же человек, а не тролль. Сам он здешних троллями считает. Но это вполне очевидно.
HerrPotapov, это скорее похоже на то, что вы нашли "мальчика для битья".
Я как-то попадал в подобную ситуацию. Написал на другом форуме с криками о помощи, а в ответ мне толпой начали писать всякие каки, что типа проект ГМО и сам я ГМО. Ясен-красен в защиту я поогрызался, а в ответку полетели минусы. Я тут же ретировался, т.к. кому-то что-то доказывать это дохлый номер. Sandar, кстати, подумай над этим.
Я не в чью-то защиту сейчас пишу. Просто наблюдаю картинку, свойственную для рунета, когда кого-то затюкать это в порядке вещей.
Sandar, а ещё я, если честно, в успех вашего проекта не верю, но поживем-увидим. Просто я натыкался на другого персонажа-организатора, который вдохновившись историями успешных стартапов решил, что сможет также. Влил неплохую сумму в очередного убийцу Сталкера (гораздо больше, чем ты намерен выделить), а выхлоп нулевой. Потом, когда деньги кончились, он решил набирать энтузиастов. Как итог - текучке кадров можно только позавидовать, а прогресс стремится к нулю. Хотят найти инвестора, но кто будет инвестировать проект, который тянется уже 8 лет, кажется, а даже демки полноценной до сих пор нет! Его тема где-то здесь на форуме тоже болтается.


Сообщение отредактировал Vuvk - Понедельник, 17 Июля 2017, 07:01
VuvkДата: Воскресенье, 16 Июля 2017, 22:15 | Сообщение # 149 | Тема: Для души
заслуженный участник
Сейчас нет на сайте
Зачем вы его минусуете? Самоутверждаетесь, что ли? Горбатого только могила исправит, как говорится.
VuvkДата: Воскресенье, 16 Июля 2017, 08:56 | Сообщение # 150 | Тема: Затирание данных перед освобождением
заслуженный участник
Сейчас нет на сайте
Цитата
указатели на виртуальные функции и которые да, действительно, мемсетом обнулять немножко глупо.

С этим все ясно. Есть ли какие-то ситуации, когда не глупо - вот в чем вопрос. Просто разобраться хочу. %)

Добавлено (16 июля 2017, 08:56)
---------------------------------------------
Похоже в итоге натолкнулся на "неглупую" ситуацию, когда, по-видимому, не обойтись хотя бы без частичного затирания.
Опишу вкратце. Я пишу на Си, но всячески имитирую ООП-механизмы. Для определения к какому "классу" относится созданный объект (на основе структур) в них зашит в заголовок идентификатор (у каждого свой). Например, текстура:
Код

#define TXR_IDENT 0x5F525854   // 'T', 'X', 'R', '_' = 1599232084 = 0x5F525854

Проверка очевидна:
Код

bool ObjectIsTexture(void* object)
{
    if (object == NULL)
        return false;

    if (*((uint32*)object) == TXR_IDENT)
        return true;

    return false;
}

Есть различные структуры, содержащие указатели на текстуру для использования. В случае, если текстура удалена, её нельзя использовать, как ресурс. Для этого производится такая проверка в момент обращения к ней:
Код

if (texture != NULL)
{
  if (ObjectIsTexture (texture))
  {
    /* использовать */
  }
  else
    texture = NULL;
}

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


Сообщение отредактировал Vuvk - Воскресенье, 16 Июля 2017, 09:06
VuvkДата: Суббота, 15 Июля 2017, 11:45 | Сообщение # 151 | Тема: Ищем сотрудников для работы над проектом "Reign of Guilds"
заслуженный участник
Сейчас нет на сайте
Отписал вам на почту
VuvkДата: Суббота, 15 Июля 2017, 09:23 | Сообщение # 152 | Тема: Затирание данных перед освобождением
заслуженный участник
Сейчас нет на сайте
К счастью, в языке C ссылок нет))
За ответ спасибо.
VuvkДата: Суббота, 15 Июля 2017, 08:31 | Сообщение # 153 | Тема: Затирание данных перед освобождением
заслуженный участник
Сейчас нет на сайте
Всем привет! Вопрос у меня не только по С/С++, но и вообще. Однако т.к. я задумался над этим, когда писал код на Си, то и разместил его здесь. Вопрос ламерский )
Итак, суть:
есть любая структура с несколькими полями -
Код

typedef struct
{
  float x, y, z;
  int anything;
} example_s;

В каком-то участке программы я её динамически создал:
Код

example_s* example = (example_s*)calloc(1, sizeof(example_s));

/* что-то с ней сделал и решил удалить */

memset(example, 0, sizeof(example_s));      /* вопрос */
free(example);
example = NULL;


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

Спасибо за внимание.


Сообщение отредактировал Vuvk - Вторник, 18 Июля 2017, 09:22
VuvkДата: Пятница, 14 Июля 2017, 17:33 | Сообщение # 154 | Тема: Поворот к платформе
заслуженный участник
Сейчас нет на сайте
Рейкаст -> взять нормаль в точке столкновения -> повернуть муху
Ну как-то так.
VuvkДата: Пятница, 14 Июля 2017, 17:26 | Сообщение # 155 | Тема: [Java/Android] BuildHabit
заслуженный участник
Сейчас нет на сайте
VuvkДата: Пятница, 14 Июля 2017, 14:01 | Сообщение # 156 | Тема: Проблема с Рэгдоллом
заслуженный участник
Сейчас нет на сайте
Grisha56, а это значит, что с самим префабом куклы что-то не так. Например, одна из частей тела static.
VuvkДата: Пятница, 14 Июля 2017, 13:53 | Сообщение # 157 | Тема: Kingstagram [PC, IOs, Android]
заслуженный участник
Сейчас нет на сайте
Видимо их
VuvkДата: Пятница, 14 Июля 2017, 12:49 | Сообщение # 158 | Тема: NOX Android - Эмулятор
заслуженный участник
Сейчас нет на сайте
Цитата andarky ()
Суть проблемы вот в чем: размер файла диска уже более 11гиг.
Хотя я почистил все внутри эмулятора.

То, что ты там внутри почистил, ничего не меняет. Размер диска увеличивается автоматически по требованию, но автоматически не уменьшается. Sad, but true. Во всяком случае, если это точно VBox.

гугл выдал мне две версии уменьшения диска vmdk в VmWare и в VirtualBox:
Раз
Два
VuvkДата: Пятница, 14 Июля 2017, 09:31 | Сообщение # 159 | Тема: Озвучка
заслуженный участник
Сейчас нет на сайте
Red_Pandas, для заманухи нужно поменять название и описание темы местами ;)
VuvkДата: Пятница, 14 Июля 2017, 07:42 | Сообщение # 160 | Тема: Проблема с Рэгдоллом
заслуженный участник
Сейчас нет на сайте
Grisha56, какой-то ну очень кривой способ создать трупик вместо персонажа. По идее нужно, чтобы и трупик, и игрок был одним и тем же объектом. Когда игрок "умирает", отключить скрипты управления, включить физику на всех частях тела и включить, если есть, скрипты трупика.
puksus верно подметил.
Если же использовать трупик, как отдельный префаб всё-таки, то создание трупа умещается в двух строках кода:
Код

public GameObject player;
public GameObject deadPlayer;

if (Input.GetKeyDown(KeyCode.X))
{
  if (player)
  {
    // создать дохлого игрока в месте игрока и с поворотом игрока
    if (deadPlayer)
      Instantiate (deadPlayer, player.transform.position, player.transform.rotation);
    // удалить игрока
    Destroy(player);
  }
}


Сообщение отредактировал Vuvk - Пятница, 14 Июля 2017, 07:47
Поиск:

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