Обновить

Геймдев

Сначала показывать
Порог рейтинга

Оптимизация игр: работа со строками

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

Поэтому приглашаем вас на второй вебинар!

Поговорим о работе со строками с экспертами из индустрии:

  • поделимся удачными (и не очень) историями развития собственных решений

  • расскажем о пулах строк и способах экономии памяти

  • разберём, как ускорить поиск подстроки в строке и почему одна реализация может быть быстрее другой

📅4 декабря
⏰ 15:00

Подробная программа и регистрация доступны по ссылке. Присоединяйтесь и приглашайте коллег!

Теги:
Рейтинг0
Комментарии0

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

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Определение типа fullscreen

Понадобилось мне как‑то определять тип fullscreen для вывода подходящего типа уведомления (звуковое/системное/окном) во время запущенных игр и родился такой код:

    public enum WindowFullscreenState
    {
        None,
        Emulated,
        Shared,
        Exclusive,
        ExclusiveGdi,
        NotOwned
    }

    public static WindowFullscreenState GetForegroundWindowFullscreenType()
    {
        var result = WindowFullscreenState.None;   
        uint dwProcessId;
        D3DKMT_QUERYVIDPNEXCLUSIVEOWNERSHIP query = new D3DKMT_QUERYVIDPNEXCLUSIVEOWNERSHIP
        {
            hWindow = GetForegroundWindow()
        };

        GetWindowThreadProcessId(query.hWindow, out dwProcessId);

        query.hProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, false, dwProcessId);
        if (query.hProcess != IntPtr.Zero)
        {
            D3DKMTQueryVidPnExclusiveOwnership(ref query);
            CloseHandle(query.hProcess);

            result = query.OwnerType switch
            {
                D3DKMT_VIDPNSOURCEOWNER_TYPE.D3DKMT_VIDPNSOURCEOWNER_UNOWNED => WindowFullscreenState.NotOwned,
                D3DKMT_VIDPNSOURCEOWNER_TYPE.D3DKMT_VIDPNSOURCEOWNER_SHARED => WindowFullscreenState.Shared,
                D3DKMT_VIDPNSOURCEOWNER_TYPE.D3DKMT_VIDPNSOURCEOWNER_EXCLUSIVE => WindowFullscreenState.Exclusive,
                D3DKMT_VIDPNSOURCEOWNER_TYPE.D3DKMT_VIDPNSOURCEOWNER_EXCLUSIVEGDI => WindowFullscreenState.ExclusiveGdi,
                D3DKMT_VIDPNSOURCEOWNER_TYPE.D3DKMT_VIDPNSOURCEOWNER_EMULATED => WindowFullscreenState.Emulated,
                _ =>WindowFullscreenState.None
            };
        }

        return result;
    }

    public enum D3DKMT_VIDPNSOURCEOWNER_TYPE
    {
        D3DKMT_VIDPNSOURCEOWNER_UNOWNED = 0,
        D3DKMT_VIDPNSOURCEOWNER_SHARED = 1,
        D3DKMT_VIDPNSOURCEOWNER_EXCLUSIVE = 2,
        D3DKMT_VIDPNSOURCEOWNER_EXCLUSIVEGDI = 3,
        D3DKMT_VIDPNSOURCEOWNER_EMULATED = 4
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct LUID
    {
        public uint LowPart;
        public int HighPart;
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct D3DKMT_QUERYVIDPNEXCLUSIVEOWNERSHIP
    {
        public IntPtr hProcess;
        public IntPtr hWindow;
        public uint VidPnSourceId;
        public LUID AdapterLuid;
        public D3DKMT_VIDPNSOURCEOWNER_TYPE OwnerType;
    }

    [DllImport("user32.dll", SetLastError = true)]
    private static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);

    [DllImport("kernel32.dll", SetLastError = true)]
    private static extern IntPtr OpenProcess(uint dwDesiredAccess, bool bInheritHandle, uint dwProcessId);

    [DllImport("kernel32.dll", SetLastError = true)]
    private static extern bool CloseHandle(IntPtr hObject);

    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
    private static extern int MessageBoxW(IntPtr hWnd, string lpText, string lpCaption, uint uType);

    private const uint PROCESS_QUERY_LIMITED_INFORMATION = 0x1000;

    [DllImport("gdi32.dll", EntryPoint = "D3DKMTQueryVidPnExclusiveOwnership")]
    private static extern int D3DKMTQueryVidPnExclusiveOwnership(ref D3DKMT_QUERYVIDPNEXCLUSIVEOWNERSHIP data);
    
    [DllImport("user32.dll")]
    public static extern IntPtr GetForegroundWindow();

Схема использования с типами уведомлений:

WindowFullscreenState.Exclusive -> SendVoiceNotification
WindowFullscreenState.ExclusiveGdi -> SendVoiceNotification
WindowFullscreenState.Emulated -> ShowSystemNotification
WindowFullscreenState.Shared -> ShowSystemNotification
WindowFullscreenState.NotOwned || WindowFullscreenState.None -> IsForegroundWindowSmallerThanScreen ? ShowCustomWindow : ShowSystemNotification

Подробнее можно прочитать про виды захвата экрана тут и тут.

P.S. Некоторые игры (ExclusiveGdi) можно заставить (Emulated) получать системные уведомления через режим совместимости.

Теги:
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Valve анонсировала сразу три устройства — всё на базе SteamOS, продажи стартуют в начале 2026 года. Цены пока не раскрывают:

  • Steam Frame: это полностью автономная VR-гарнитура весом 440 грамм, которая не требует подключения к ПК или Steam Deck. Здесь можно играть, писать код, смотреть фильмы в браузере с облачными сохранениями. Разрешение на линзу — 2160×2160 пикселей при частоте 144 Гц.

  • Steam Machine: мини-ПК, мощнее PS5 и в 6 раз производительнее Steam Deck. На базе процессора AMD Zen 4 и видеокарты AMD RDNA 3 28CU с 8 ГБ памяти, с 16 ГБ ОЗУ и возможностью запускать игры в 4K/60 FPS. Корпус сделали в стиле Xbox. + Можно кастомизировать внешний вид.

  • Steam Controller: гибрид геймпадов Xbox и PlayStation, но с сенсорными панелями под стиками, как у Steam Deck, для точной стрельбы в шутерах.

Теги:
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Почему сейчас стоит поиграть в Hitman?

В следующем году у студии IO interactive выходит 007 First light, и для меня это стало причиной вернуться в серию Hitman. World of assassination наконец-то можно считать законченным, весь контент доступен. Рекомендую и вам облачиться в костюм и забриться налысо, ниже я объясню почему.

Чем хорош Hitman?

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

Лично для меня момент откровения - джунгли в первой части. Ранее я всегда проходил этот этап с читами. Смена обстановки, ситуации и штурмовая винтовка в руках заставляли играть в Hitman как в шутер, за что я постоянно попадал в передряги. И в рамках марафона я решил закрыть гештальт и превозмочь. Пробовал разные тактики, начиная от партизанской войны и заканчивая тайным проникновением на базу картеля. В середине или под конец уровня все равно ждал провал. Но когда после многих часов неудачных попыток выдохнул, изучил территорию, нашел на предыдущих этапах полезное снаряжение и решил эту загадку - вот тогда я максимально проникся главной идеей. Мы - дерзкий хищник, который выслеживает жертв, планирует, маскируется, использует окружение и убивает цели нетривиальными способами, и так выходит из ловушек победителем. Даже если охота ведется на нас - добыча не может превзойти 47-ого. И игроки за это любят серию и ее лысое лицо.

Почему стоит ознакомиться сейчас?

Приключения киллера ставятся на паузу. Когда перезапуск только выходил, я запустил первые два уровня, и мне их хватило с лихвой чтобы насытиться. А уровней было 6, плюс пролог. Сейчас сюжет окончен. Помимо этого много другого контента: цели недели, где ты имеешь одну попытку на устранение цели; миссии обострения - аналог сетевой игры из Absolution, в который я когда-то тоже залипал; особые цели и цепочки миссий для опытных игроков. Хватит надолго. Так что рекомендую тем, кто забросил серию, все же вернуться в нее.

А что же новая игра? Молодой Джеймс Бонд - идейный продолжатель (недаром одной из целей 47-ого был Лё Шиффр из «Казино рояль»). И ознакомившись с Hitman можно оценить, чего ожидать от будущего проекта.

На сладкое, для незнакомых с серией

У Hitman есть free starter. Миссия Сапиеца доступна всем бесплатно. Этого достаточно, чтобы покайфовать и поиграться в плане «а если я попробую сделать вот так?» И если вам понравится, а вернее когда, вы можете взять уже полную версию, или попробовать поиграть в прошлые части. В Steam сейчас скидка до 17 ноября, но сама игра недоступна для РФ (при этом стартер пак доступен). Сейчас игроки чаще всего решают это через сторонние площадки типо Plati.market.

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

Оригинал можно пройти следом, особенно после ознакомления с историей создания - через тернии, вопреки, по стечению обстоятельств. Именно так часто и рождаются легенды.

Попробуйте, а потом напишите в комментариях - какая часть или миссия вам запомнилась и чем. А может вам интересно узнать, как 47- ой связан с матрицей, thief и корейским кинематографом?

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии4

Сборник эмуляторов под консоли для ПК — теперь можно, без преувеличения, запускать многие игры, не покупая приставки, диски и картриджи.

PlayStation:

PS1 — DuckStation

PS2 — PCSX2 (ARMSX2 на Android)

PS3 — RPCS3 (aPS3e на Android) PS4 — ShadPS4

Xbox:

Xbox — XEMU

Xbox 360 — Xenia

Nintendo:

NES — Mesen

SNES — Snes9x (EX+ на Android) 64 — RMG Gamecube и Wii — Dolphin

3DS — Azahar

WiiU — Cemu

Switch — Ryujinx и Eden

Sega:

Mega Drive — BlastEm

Saturn — Yaba Sanshiro

Dreamcast — Flycast

Ретро-игры:

RetroArch — огромный выбор олдскульных тайтлов для различных консолей.

OpenEmu — сборник игр для таких легенд как Atari 2600, Sega 32X, GameBoy и прочих.

Ares — также полезный эмулятор различных олдовых консолей.

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии2

В игровом чате EA теперь нельзя писать сокращение «GG» (Good game) и за это пользователь получает наказание в виде бана аккаунта на 72 часа. Это сообщение подразумевает «хорошую игру», однако у проигравшей команды могла быть плохая игра, и сообщение для них могло быть обидным.

Теги:
Всего голосов 5: ↑4 и ↓1+5
Комментарии4

Блогер показа самый иммерсивный рабочий стол по Minecraft. Ярлыки программ и игр красивенько размещены в слотах персонажа — можно даже открывать «инвентарь» персонажа. Для такого модного сетапа понадобятся три вещи — Windows 11, Rainmeter Skins и Wallpaper Engine. Последние две программы позволяют создать обои на любую тематику.

Теги:
Всего голосов 2: ↑0 и ↓2-2
Комментарии2

Представлен симулятор тимлида, который управляет командой горе-программистов и должен успеть сдать проект в срок. Задача — сдать всё и не выгореть, когда полыхают дедлайны. Всё как в реальном офисе: бесполезные стендапы, куча созвонов с заказчиками, горы тасков и код-ревью. Нужно помогать команде сдать проект и при этом не поехать кукухой.

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Делимся цифрами Next Fest: смотрите динамику и делайте выводы для своей игры

Я и еще два человека решили открыть данные игры на время Steam Next Fest. Мы отслеживаем:

1. Количество вишлистов

2. Количество уникальных игроков (сколько людей реально запустило игру)

3. Количество показов банера демо версии

4. Пик игроков за день

Интересно посмотреть на динамику этих показателей - как отработают алгоритмы Steam во время фестиваля. Если интересно мониторить, то вот ссылка на Google Sheets. Мы решили сделать для себя, но вдруг кому будет полезно.

Через пару дней после фестиваля документ закроем скорее всего.

П.С. На графике выводятся не абсолютные значения, а разница день ко дню.

Теги:
Всего голосов 4: ↑3 и ↓1+2
Комментарии0

Студия Owlcat Games, известная по серии Pathfinder и Warhammer 40,000: Rogue Trader, запустила бесплатный справочник ресурсов для разработчиков игр. Проект реализован совместно с издателями Midwest Games и Fireshine Games, а также студиями Gaijin Entertainment (War Thunder) и 11 Bit Studios (Frostpunk, The Alters).

База данных размещена на отдельной странице сайта Owlcat и содержит более 350 обучающих материалов. Ресурсы охватывают геймдизайн, программирование, нарративный дизайн, управление проектами и другие направления. В коллекцию входят рекомендации по софту, туториалы, онлайн‑курсы и прочие справочные материалы.

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Владимир Ликич — автор книги «Understanding Linux: The Kernel Perspective», обладатель учёной степени в области биоинформатики и просто энтузиаст Unix-подобных операционных систем. В своём микроблоге он иногда публикует различные факты про историю развития этой известнейшей операционной системы. К примеру, 9 октября он написал небольшой (192 слова) пост про терминал DEC VT100.

В ответ на твит оживился другой известный энтузиаст истории компьютерных технологий — Дейв Пламмер, ветеран Microsoft, зарекомендовавший себя в Вебе как автор первых версий «Диспетчера задач» Windows, порта 3D Pinball: Space Cadet на Windows NT и механизма активации Windows XP. Пламмер уже давно ушёл на покой и занимается травлей баек в личных блогах, но не отказывает себе в удовольствии покупать старые компьютеры и мини-ЭВМ.

Пламмер показал собственный экземпляр DEC VT100. Терминал подключён к PDP-11/34, на которой крутится 29BSD.

davepl1968

Конечно, читатель сразу обратит внимание на другое, куда более интересное устройство в кадре. Это игровой автомат в формате мини (так называемый cabaret) известнейшей Tempest. В комментариях у Пламмера на игровой автомат сразу же указал стример Кевин Гриффин.

Tempest — видеоигра 1981 года компании Atari, и её жанр безошибочно определяется как shoot'em up. Более продвинутый геймер даже укажет, что это тоннельный шутер, и будет полностью прав. Напомнить нужно лишь о том, что Tempest — первый представитель данного поджанра, именно здесь были заложены правила и нормы. За Tempest последовали Gyruss (1983) компании Konami и продолжения Tempest 2000, 3000 и 4000 руки Джеффа Минтера. Также Минтер вдохновлялся Tempest, когда разрабатывал TxK (2014).

В Tempest игрок управляет космическим кораблём, который передвигается по игровому полю в виде трубы сложной формы. Игра полагается на векторную графику, которая выводится на экран Quadrascan производства Wells-Gardner. Элементы игры рисуются не пикселями, а острыми светящимися линиями.

Этот экземпляр игрового автомата — уникальный. Как в ответе Гриффину пояснил Пламмер, у него в коллекции есть все три форм-фактора автоматов Tempest (стандартный вертикальный, горизонтальный, мини), но конкретно на этом Дейв никогда не играет. Тому есть очень интересная причина.

Автомат был получен от семьи бывшего сотрудника Atari. Как видно на фотографии, в памяти автомата остались рекорды некоего DFT. Их в начале восьмидесятых на рождественском корпоративе Atari поставил не кто иной, как Дейв Тьюрер, сам автор Tempest. Пламмер не хочет случайно перезаписать этот «автограф» создателя игры.

Теги:
Всего голосов 7: ↑7 и ↓0+10
Комментарии2

Директор Ассоциации развития киберспортивной инфраструктуры (АРКИ) Павел Голубев в беседе с ресурсом «Газета.Ru» рассказал, как киберспорт при правильном подходе может быть полезен для развития детей. В качестве примера специалист привел популярные игры — Dota 2 и Counter‑Strike.

«Командные дисциплины вроде Dota или Counter‑Strike учат коммуникации, взаимодействию в команде, распределению ролей, ответственности за общий результат. Многие игры формируют навык стратегического мышления, умение анализировать ситуацию и принимать быстрые решения под давлением. Кроме того, ребёнок учится работать с информацией в ограниченное время, планировать ресурсы и контролировать эмоции», — отметил Голубев.

Специалист подчеркнул, что качества, приобретённые во время занятий киберспортом, пригодятся ребёнку в дальнейшей жизни.

«Эти качества востребованы и за пределами игр — будь то учёба, работа или коммуникация в реальной жизни. Поэтому игры в целом и киберспорт в частности могут быть полезными инструментами развития, но только если они правильно встроены в систему: через кружки, секции, клубы, где есть тренер, способный направить процесс в нужное русло», — сказал Голубев.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии3

Ближайшие события

На Хабре продолжается игра «Стартап-кранч» с призами для участников проекта, кто наберёт больше всего баллов. Этот проект вышел ко Дню программиста и будет продолжаться до 15 октября. «Соберите команду, запустите стартап и взорвите рынок в безумной игре ко Дню программиста», — пояснили в Хабре.

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии0

Гипер Шары теперь умеют играть не только в Линии, но и в Шахматы. Всё началось с идеи - а могут ли шары своими физиономиями подсказывать как они ходят? Оказалось, что очень даже могут. Их мнемоничность позволяет быстро освоить правила игры, даже совсем новичкам в шахматах.

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

А самая жесть заключается в том, что правила ходов зависят из-за этих костылей не только от текущего состояния поля, но и от истории прошлых ходов. Не надо так. Выпиливаем это легаси. Оно всё равно на суть игры влияет не сильно.

Ну и по мелочи: пешке нет смысла превращаться во что-то отличное от ферзя, а шахи и маты не имеют смысла - для конца игры достаточно завалить короля противника. Не заметил вовремя угрозы - проиграл.

Можно было бы взять готовую мега оптимизированную реализацию шахматной логики типа stockfish, но оно весит как самолёт. Я же хотел с шариками поиграть, а не на индикатор загрузки любоваться. Не надо так. Закатываем рукава.

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

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

Пусть все состояния доски у нас образуют дерево. Введём функцию "подумать", которая рекурсивно идёт от текущего состояния по этому дереву, выбирая на каждом шаге лучший ход. Дойдя до листа дерева, она перебирает все возможные ходы на +1 уровень. После этого оценки состояний поднимаются до корня по принципу минимакс: один игрок максимизирует оценку, а другой минимизирует. Следующий вызов "думания" может пойти уже по другой ветке дерева, а значит старую ветку можно удалить из памяти, оставив лишь её оценку. И пока игрок думает над своим ходом, бот тоже "думает" гоняя анализ в фоновом цикле.

В результате получаем, что в памяти держится лишь текущий самый оптимальный для всех игроков сценарий и оценки его ответвлений. Этот сценарий постоянно мутирует, выбирая для каждого игрока всё более оптимальные ходы. И всё это счастье весом суммарно всего 6кб со всеми зависимостями.

А играть с ним - одно удовольствие. Он очень быстро просекает всякие многоходовочки, не совершая глупых ходов. Но при этом, чем быстрее играет пользователь, тем меньше у бота времени для глубокого анализа, а значит больше шансов его перехитрить. Но это довольно сложно. У меня пока не получилось.

Есть ли у нас тут мастера шах-фу, которые покажут этому примитивному автоботу, кто тут настоящий интеллект?

Теги:
Всего голосов 5: ↑3 и ↓2+2
Комментарии0

Посиделки с инди #5: The King is Watching и путь к 300к копиям. Много говорили про геймджемы. Профакапился с тем, что про управление командой мало расспросил, но даже без этого 2 часа вышло 😅

Немало поговорили про подход и мировоззрение, курсы и способы/пути обучения.

Где можно послушать/посмотреть:

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

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Как вы справляетесь с усталостью при разработке игр и не только?

Привет, пользователи Хабр. Я одиночный разработчик, который временами выкладывает проекты на GitHub и itch.io. Несмотря на годы попыток, уровень моих скиллов остаётся низким: простое — на несколько сотен строк — я ещё делаю, но как только проект становится серьёзнее, я быстро выгораю. И всё же продолжаю (не без помощи ИИ).

Усталость, которая не лечится отдыхом

Бывает так: усталость не уходит ни от отдыха, ни от смены деятельности. Чтобы не бросить, я продолжаю делать хоть что-нибудь — игру, программу. Итог часто один: сырой продукт, который либо стыдно показывать, либо выкладываешь и жалеешь.

И это не меняется даже после десятка проектов. Скилл будто не растёт. Я читаю и вникаю в код, не копирую бездумно, но всё равно. Как только строк становится больше тысячи, мой мозг «плывёт». Попытки разделять на файлы только путают ещё сильнее.

Это не только про код

То же самое со всем, к чему я прикасался: дизайн, моделирование, программирование, сайтостроение, YouTube, стриминг, подкасты, книги, рассказы, поэзия, блоги, модерация, рисование, фриланс. Иногда это даже приносило деньги. Но чувство усталости никуда не уходило.

Цикл один и тот же: выгораю, бросаю, возвращаюсь. Зачем? Может, ради людей, чтобы они что-то осознавали и отпускали. Может, ради себя и своего эго. Ответа у меня нет.

Вечный поиск «лучшей технологии»

Последние две игры я делал через выгорание. Вчера понимал логику — сегодня забыл. Дневники только запутывают сильнее.

В итоге это превратилось в бесконечную гонку за «лучшей» технологией. Я прыгал между Linux и Windows, изучал десятки языков. Был даже ассемблер (FASM) и попытка собрать вычислительный механизм в Minecraft. Всё частично работало, но только выматывало.

Советы не помогают

Фразы вроде «опирайся на то, что тебе нравится» — не работают. У меня небольшой прогресс есть в разных областях, но явного предпочтения нет.

Говорят: «Надо иметь своё мнение». Я стараюсь. Но у меня внутри слишком много противоречивых стремлений, и они всё время мешают друг другу. Подавить это невозможно.

Вопрос к сообществу Хабра

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

Очень прошу: без споров про ОС или ЯП. Это выматывает ещё сильнее.

Мне нужен любой ответ — логичный или нелогичный. Я постараюсь понять и, может быть, это поможет не только мне, но и другим людям, которые сталкиваются с тем же.

Спасибо, что дочитали. Мне нужно было высказаться. Надеюсь, однажды каждый из нас найдёт свой ответ.

Теги:
Всего голосов 5: ↑4 и ↓1+4
Комментарии40

Ко Дню программиста на Хабре вышла игра «Стартап-кранч» с призами для участников проекта, кто наберёт больше всего баллов. Этот проект будет продолжаться до 15 октября. «Соберите команду, запустите стартап и взорвите рынок в безумной игре ко Дню программиста», — пояснили в Хабре.

Теги:
Рейтинг0
Комментарии0

Разработчики ролевого MMO‑шутера Pioner показали одного из боссов игры — это Заводской Аннигилятор Явных Целей — сокращённо З.А.Я.Ц. (отсылка к механическому зайцу из «Ну, погоди!»).

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии1

Динамическое отражение в воде из текстовых символов

Сделал новый фон для боевых локаций: динамические отражения в воде из одних только ASCII-символов. Думаю использовать эту визуальную фичу в нескольких локациях. Как обычно, кроме текстовых символов (которые есть на любой клавиатуре) ничего не используется. Символы не масштабируются и не вращаются. Почти текстовый режим)) Алгоритм волн - упрощенный алгоритм Герстнера с двумя трохоидальными волнами. Чтобы считалось порезвее. Если вам нравится стиль, заходите на страничку игры в Стиме!

Теги:
Всего голосов 10: ↑9 и ↓1+14
Комментарии12