1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Новый игровой движок

Тема в разделе "Мастерская", создана пользователем Bobbie, 11 дек 2016.

  1. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Для примера - Zombieland
    Это было тестовое задание для приёма на работу, надо было сделать с, сильно почти, нуля и за неделю. Через командную строку можно задать количество зомбарей, собственно достаточно было 2000, чтобы пройти тест. Тестировал на нетбуке с одноядерным атомом (не помню точно модель, один самых говёных). Плюс у зомбаков вполне развитое чувство направления и даже препятствия обходят неплохо, это тоже процессор кушает, особенно когда их тыщ 20, а не две.
    Это я к чему ваще, к тому что нагрузив по максимуму легче увидеть слабые стороны и более того - ужасные стороны. =)
     
    Последнее редактирование: 25 янв 2018
    Dimouse, Master of Games и Grongy нравится это.
  2. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Кстати, о каких 20 спрайтах идёт речь? Посмотрите на Crimsonland, например.
     
  3. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    145
    @Steel Rat, вы правы. Я считал спрайты по головам врагов/персонажей и забыл, что спецэффекты тоже делаются через спрайты. Моя ошибка. В ближайшее время сделаю тест на 2000 спрайтов.
    --- добавлено 25 янв 2018, предыдущее сообщение размещено: 25 янв 2018 ---
    @MisterGrim, тестеру предстоит довольно простая задача. Запустить демку и сказать сколько fps она выдает. Счетчик fps встроен в демку. Так же необходимо в диспетчере задач узнать насколько сильно демка грузит процессор.
    --- добавлено 25 янв 2018 ---
    Вариант с софтварным рендерингом адаптирован для работы в Windows 98. Он требует 32 мегабайта оперативной памяти и Pentium 3 на 800 мегагерц.
    --- добавлено 25 янв 2018 ---
    @Steel Rat, Протестировал на предельную нагрузку варианты движка с Opengl и Direct2D рендером. Даже при 20000 спрайтах выдает 59 fps.
     
  4. IdeaGen

    IdeaGen

    Регистрация:
    4 фев 2014
    Сообщения:
    1.369
    ограничитель чтоли стоит, чего всегда 59 кадров? если так, то проверить влияние железа невозможно.
     
  5. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    145
    @IdeaGen, Поставил ограничитель чтобы не сильно нагружало процессор. Завтра проверю без него
     
  6. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    @Bobbie, отлично, теперь можно спокойно прикручивать дым и пыль. =)
    --- добавлено 26 янв 2018, предыдущее сообщение размещено: 26 янв 2018 ---
    printf("59");
     
    Master of Games нравится это.
  7. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    145
    @Steel Rat, ваш сарказм не к месту. FPS считается по честному. Это видно из кода демки.

    Offtop

    #include "SDGF.h"

    int main(void)
    {
    long int x,y,screen_width,screen_height;
    unsigned char frame;
    SDGF_Screen screen;
    SDGF_Gamepad gamepad;
    SDGF_Sound sound;
    SDGF_Audio audio;
    SDGF_Player player;
    SDGF_Timer timer;
    SDGF_Image image;
    SDGF_Background space;
    SDGF_Sprite ship,font;
    SDGF_Text text;
    screen_width=screen.get_width();
    screen_height=screen.get_height();
    x=screen_width/2;
    y=screen_height/2;
    image.load_tga("space.tga");
    space.load_image(image);
    image.load_tga("ship.tga");
    ship.load_image(image);
    image.load_tga("font.tga");
    font.load_image(image);
    text.load_font(font.get_handle());
    gamepad.initialize();
    space.initialize(screen.get_handle());
    ship.initialize(screen.get_handle());
    font.initialize(screen.get_handle());
    space.resize_image(screen_width,screen_height);
    screen.clear_screen();
    frame=1;
    ship.set_frames(2);
    text.set_position(font.get_sprite_width(),font.get_sprite_height());
    timer.set_timer(1);
    sound.set_volume(255);
    player.initialize(sound.get_handle());
    audio.load_wave("space.wav",player);
    while(1)
    {
    if(player.play()==false) player.rewind_audio();
    gamepad.update();
    if(gamepad.get_press()==SDGF_KEY_X) break;
    if(gamepad.get_press()==SDGF_KEY_A) ship.mirror_image(0);
    if(gamepad.get_press()==SDGF_KEY_B) ship.mirror_image(1);
    if(gamepad.get_hold()==SDGF_KEY_UP) y-=4;
    if(gamepad.get_hold()==SDGF_KEY_DOWN) y+=4;
    if(gamepad.get_hold()==SDGF_KEY_LEFT) x-=4;
    if(gamepad.get_hold()==SDGF_KEY_RIGHT) x+=4;
    if((x<=0)||(x>=screen_width)) x=screen_width/2;
    if((y<=0)||(y>=screen_height)) y=screen_height/2;
    space.draw_background();
    text.draw_text("Technical demonstration #4");
    ship.draw_sprite_frame(x,y,frame);
    screen.refresh();
    if (timer.check_timer()==true)
    {
    frame++;
    if (frame>2) frame=1;
    }

    }
    return 0;
    }
     
    Master of Games нравится это.
  8. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    @Bobbie, с чувством юмора тебе повезло. Меня вот оно отвлекает постоянно.
     
  9. daemolisher

    daemolisher

    Регистрация:
    2 дек 2009
    Сообщения:
    1.704
    Код:
    unsigned char frame;
    frame=1;
    ship.set_frames(2);
    while(1)
    {
      ship.draw_sprite_frame(x,y,frame);
      if (timer.check_timer()==true)
      {
        frame++;
        if (frame>2) frame=1;
      }
    }
    не понятно мне, что делает frame
     
  10. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    145
    @daemolisher, frame это номер кадра анимации.
    @IdeaGen, Заново провел тест на 20 тысяч спрайтов с отключенным ограничителем. Выдает 124 fps
     
    Master of Games нравится это.
  11. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Скачал из заглавного поста демку, счётчика fps не вижу, как и множества спрайтов.
     
  12. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    145
    @MisterGrim, Стресс-тест внутренний и не выкладывался в публичный доступ. В публичной версии один спрайт. Счетчик fps это цифра в левом верхнем углу экрана.
     
    Последнее редактирование: 26 янв 2018
  13. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Ну тогда непонятно, что мы тут вообще обсуждаем.
     
  14. Master of Games

    Master of Games

    Регистрация:
    30 июн 2016
    Сообщения:
    122
    Можете сделать демку, где можно будет выбирать кол-во спрайтов и потом выложить сюда?
     
  15. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Масло масляное. == true писать не надо.
     
  16. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    145
    @Master of Games, могу выложить исходник стресс-теста.
    Не забудьте в методе sync класса SWGF_Screen закомментировать вызов метода wait_timer.
     

    Вложения:

    • test.txt
      Размер файла:
      1,9 КБ
      Просмотров:
      682
    Последнее редактирование: 26 янв 2018
    Master of Games нравится это.
  17. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    @Bobbie, ты на С, случаем, не с Паскаля перешёл?
     
  18. Bobbie

    Bobbie

    Регистрация:
    28 ноя 2016
    Сообщения:
    145
    @Steel Rat, Нет. Порядок изучения языков был такой: Си++, обычный Си, Паскаль.
     
  19. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    @Bobbie, просто у тебя ярко выраженная секция типа "var". В С это не нужно, огромный плюс С - это объявление переменных в зоне видимости, помогает избежать множества багов. Т.е. for (int i = 0... а не int i; for (i = 0...
    Ну и инициализация строго обязательна сразу при объявлении переменной. Также помогает избежать ещё кучи багов.
     
    Master of Games нравится это.
  20. Master of Games

    Master of Games

    Регистрация:
    30 июн 2016
    Сообщения:
    122
    В чём писал, если не секрет? В 15 вижуал код явно не работает.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление