Возможно. Но тест проводился не для того, чтобы опорочить потоки, а для проверки нужны ли они для решения следующей задачи: Дано: самописные двусвязные список и словарь на языке Си. Задача: ускорить поиск значения по 1. номеру элемента и 2. по ключу Решение: 1. определяем к какому концу ближе номер (к голове или к хвосту) и с той стороны и начинаем поиск 2. пустить поиск с двух концов, пока не будет обнаружен элемент или не достигнута середина. С потоками резона нет как показал тест выше.
Попробуй поработать над своим проектом, не имея дохода в течении месяца
Уже пробовал. Говорю - "не все упирается в деньги"
Добавлено (12 июля 2017, 07:31) --------------------------------------------- Решил отписаться о результатах года у себя в блоге и задел болячку. Прослезился и апнул тему. Дополнил первый пост. Историю вкратце описал здесь. Ищу человека, любящего такие шедевры, как Quake1-2, HL1, Chasm The Rift, Blood, Doom. Уровни предполагаются быть такими же коридорными и с низкой детализацией, как в этих играх.
Добавлено (12 июля 2017, 07:43) --------------------------------------------- Также написана с нуля загрузка и анимация моделей формата MD2 (игра Quake2). Пока не пригодилось, но получилось любопытно:
Добавлено (29 июля 2017, 11:10) --------------------------------------------- Братишки, уп.
Сообщение отредактировал Vuvk - Среда, 12 Июля 2017, 07:43
Sandar, цель не общую картину нарисовать, а навыки заиметь. Каждый своё рисует, а остальные ему подсказывают типа "эй, пропорции неправильные" или "чо-т кислотно-зеленый с синим не очень сочетаются". В итоге все приобретают навыки, руку набивают и портфолио пополняют. Я бы в чем-нибудь таком же поучаствовал, но с программистами ))
На тему многопоточности тут провёл небольшое исследование. Хотел ускорить поиск элемента в двусвязном списке, запуская поиск с двух концов одновременно, пока один из потоков не наткнется на значение или на середину списка. Список липовый в 6000 элементов, и последовательно все опросил. Результат даже в зависимости от ОСи меня очень сильно удивил:
время в миллисекундах
Ну и видимо в этой задаче оказалось совсем не резонно использовать потоки, т.к. на подготовку потоков и их запуск тратится много времени... Цитаты из книги "Linux. Системное программирование":
Цитата
"Традиционно программы UNIX являются однопоточными, это связано с присущей UNIX простотой, быстрым созданием процессов и надежными механизмами межпроцессного взаимодействия. По всем этим причинам многопоточность не имеет в UNIX существенного значения."
Цитата
"На внутрисистемном уровне в ядре Linux реализуется уникальная разновидность потоков: фактически они представляют собой обычные процессы, которые по мере необходимости разделяют определенные ресурсы. В пользовательском пространстве Linux реализует потоки в соответствии со стандартом POSIX 1003.1c (также называемым Pthreads). Самый современный вариант реализации потоков в Linux именуется Native POSIX Threading Library (NPTL). Эта библиотека входит в состав glibc."
Сообщение отредактировал Vuvk - Пятница, 28 Июля 2017, 12:05
Эргалон, мне сложно судить, т.к. игровые и околоигровые проекты для меня всего лишь хобби Я работаю программистом на промышленном предприятии и пишу программы, которые в основном осуществляют всякие расчеты с манипуляцией сотнями параметров, хранение этого безумия в БД и формирование отчетов. Вот где рутина! Но и здесь я ставлю перед собой различные новые задачи (именно перед собой, т.к. конечные пользователи обычно не очень ценят) - то выношу все расчеты на сервер, то ускоряю формирование отчетов, то оптимизирую алгоритмы... ну и всякое такое вот. Наверное, когда хобби становится работой, то оно перестаёт быть искусством? Шут его знает.
BlackBes, сейчас я занимаюсь переписыванием с нуля своего академического игрового движка на четвертый раз. На чистом Си, чтобы прокачаться в этом языке заодно. Если вдруг будет желание спуститься с высокоуровневых языков до системного программирования, то милости прошу к нашему шалашу (архитектура модульная, можно разделить задачи).
Сообщение отредактировал Vuvk - Четверг, 27 Июля 2017, 21:23
Я тоже считаю программирование искусством. Можно плодить говнокод "лишь бы работал", а можно стремиться к красоте, как синтаксической, так и красоте реализации - чтоб работало быстро. Кто сомневается в правильности этих суждений, тот пусть почитает на досуге что-то вроде "Читаемый код, или Программирование как искусство" (Дастин Босуэлл, Тревор Фаучер)
Очень редко играю в онлайн игры. Иногда гоняю в Age of Conan или в The Elder Scrolls Online. Обычно с друзяшками в кооперативное что-то играем. Ещё под настроение люблю погонять Quake1, Quake3, openarena, Warsow...
Пора значит натаскаться в математике. Нормаль, условно говоря, вектор, перпендикулярный плоскости и направленный от лицевой стороны. В случае 2D это перпендикуляр отрезка, показывающий, где у него верх. (0.0, 1.0) это и есть "вверх" в мире 2D. В unity для поворота в сторону вектора есть Quaternion.LookRotation или Transform.LookAt, которые не прокатят в 2D, т.к. Z=0.0. Как-то нарыл такой вот класс, помогающий вертеть 2D объекты:
Код
/** copyright Leroy Ketelaars, 2015. * I hereby license the entire human race to use this code as they see fit, * provided they maintain this license in their source code as-is. * A credit mention in your resulting work would be appreciated. */ using UnityEngine; using System.Collections;
UncleNick, если по сути нет никакого опыта, то и не нужно ставить перед собой какие-то труднодостижимые (читать "не-" вместо "трудно-") цели. Если хочется 3D, но с простой механикой, то бери простые аркады и реализуй их - платформер, скролл-шутер, арканоид и пр. С виду просто, но для новичка это серьезный вызов. Как вариант - запилить что-то подобное, но в воксельном исполнении:
Моя старая игрулька
Для вокселей предлагаю взять MagicaVoxel, т.к. это весьма простая и бесплатная программа, умеющая производить экспорт своего родного .VOX-формата в полигональные модели распространенных форматов.
Сообщение отредактировал Vuvk - Четверг, 20 Июля 2017, 07:39
Хотя, если не изменяет память, даже Квейк 3 писался на Си, а не Си++. Так что, народ справлялся как-то и без ООП (:
Во всех движках idTech < 4 весьма себе объектно-ориентированный стиль. В рамках Си, конечно.
Добавлено (18 июля 2017, 09:19) ---------------------------------------------
ЦитатаOtinagi ()
Для PC, иногда, да; для контроллеров - определённо нет.
Подскажи, как специалист, почему? Или у тебя доступ не последовательный, а по номеру в массиве? Если так, то тут спору нет - оно и на ПК медленнее. Я в своем проекте остановился на списках, потому что мне нужно быстро то добавлять, то удалять элементы, а динамические массивы в этой ситуации - это грустно. Плюс мне нужно всегда проходить от первого элемента к последнему и обрабатывать их, нет необходимости дергать что-то в центре, например (либо оооочень редко).
Сообщение отредактировал Vuvk - Вторник, 18 Июля 2017, 09:20
Сейчас поглядел что там в гамаке, а там нет разделения на collision_enter и collision_exit, так что если ты это запихнул в collision (при чем всё сразу)