Создания движка: Как и зачем создавать собственный игровой движок / Хабр

Содержание

Как и зачем создавать собственный игровой движок / Хабр

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

Итак, вы задумались о создании собственного игрового движка. Отлично! У этого варианта множество плюсов в сравнении с использованием коммерческого — такого как Unity или Unreal. В этой статье разберемся, зачем разрабатывать свой движок, какие системы необходимо предусмотреть и как правильно подойти к процессу. 

Зачем?

Начнем с главного вопроса, который стоит задать себе, если вы решили разработать собственный движок: зачем это вам?

Резонными причинами могут быть, например, такие:

  • Хотите создать игру с использованием новой технологии, которую не поддерживают другие движки. Или поддерживают, но реализация слишком сложна и костыльна. Это может быть масштабная симуляция (Factorio), нестандартный проект, который не вписывается в готовые шаблоны (Noita, Miegakure), и множество других идей. В таких случаях нет иного выхода кроме как писать собственный движок под проект.

  • Хотите оптимизировать рабочий процесс под игры, которые создаете. Если для проекта не нужен полный объем возможностей коммерческого движка, есть смысл создать кастомизированный вариант с подходящими для конкретной игры редакторами и функциями. Если движок не затачивается под конкретный проект, стоит задуматься, так ли нужно самописное решение или все-таки достаточно готовых вариантов?

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

  • Вам интересно разобраться, как устроены и работают игровые движки. Это отличная причина — по правде говоря, самый веский повод заняться разработкой собственного движка.

Раз уж начали составлять списки, то вот несколько неудачных причин браться за разработку движка. Если найдете свою среди этих пунктов — притормозите и подумайте еще раз. 

  • Вам кажется, что вы придумаете движок покруче, чем Unity или Unreal (или Godot, или GameMaker). Не выйдет. Разработать подходящий для специфических нужд софт можно  (см. предыдущий список), но в одиночку или маленькой командой невозможно создать универсальный движок, который будет конкурировать с известным универсальным ПО. Особенно при первой попытке.

  • Думаете, что иначе вы «ненастоящий программист»? Использование готового движка не делает гейм-разработчика хуже. Для того они и придуманы! Это просто инструмент для создания игр. 99% проектов можно разработать при помощи уже существующего софта — в этом нет ничего постыдного. Ведь главное — это сама игра!

  • Если вы хотите таким образом сэкономить время или деньги — забудьте! Создавать движок с нуля долго, а время = деньги. Использовать готовый софт выгоднее, чем пытаться разработать собственный. В долгосрочной перспективе это может стать выигрышной стратегией, но только если движок будет основой для нескольких прибыльных проектов, и при этом значительно удобнее в работе, чем коммерческие. Такое ПО разработать сложно, особенно если это первый опыт (и почти невозможно, если речь о 3D).

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

Я начинал с флэш-игр в 90-00х, и ни один движок того времени не поддерживал импорт флэш-анимаций. Единственным выходом было создать собственный софт. Намного приятнее и быстрее закидывать swf-файлы в папку с ресурсами и сразу использовать анимации в игре без промежуточных шагов типа экспорта в списки спрайтов.

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

Что?

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

Разные движки выполняют за вас разное количество работы. Некоторые просто отображают графику на экране (Flash, Pico-8). Другие сами по себе — целая игра с возможностью кастомизации или узко заточены под определенный жанр (RPGMaker, Ren’Py). А между ними — бесчисленное количество вариантов.

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

Базовые функции движка. 

Это основы, необходимые для того, чтобы начать создавать игры.

Инициализация системы.

Приводит программу в боевую готовность после запуска — открывает окно, загружает данные. С этим (и не только!) справится стандартная библиотека SDL, проще ее и использовать. 

Контроль частоты кадров

Ограничивает частоту сменяемости кадров для плавного изображения и оптимизации работы.

Ввод

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

Рендеринг

Большинство (ну как минимум 75%) игр так или иначе используют графику, и за нее отвечает как раз движок. В 2D-игре минимальному рендеру достаточно отображать на экране текстурированные четырехугольники. Шейдеры, буферы вершин, однобуферная прорисовка, меши, материалы и так далее — это прекрасные опции, которые можно добавить позднее, если понадобится. Если хочется заморочиться с OpenGL или Vulkan и кастомизировать рендерер — на здоровье! Но помните, нет ничего постыдного в том, чтобы использовать для рендеринга готовые библиотеки типа Ogre3D. Выбор зависит от целей и потребностей разработчика, а также от того, какие задачи интереснее решать самостоятельно.

Математические и прочие утилиты

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

Дополнительные функции

Еще несколько систем, которые лучше добавить в движок ближе к делу, когда они непосредственно понадобятся для игры:

Управление игровыми объектами и сценами

Можно кодить и вручную, но практичнее предусмотреть систему для обработки отдельных игровых объектов и коллекций. Это один из ключевых механизмов в движке, ведь он управляет логикой игры. Из каких компонентов состоят объекты, на какие типы событий реагируют, как происходит взаимодействие, что со структурой памяти, используется ECS? (Кстати, «чистый» неадаптированный ECS лучше применять только для специфических кейсов.) Эти и не только  вопросы должна покрывать система управления объектами и сценами. Для таких задач доступны готовые библиотеки (особенно для чистого ECS), но, поскольку эта структура сильнее остальных влияет на игровой код, я склоняюсь к принципу «сделай сам». Использование существующего решения вынудит постоянно думать о том, как вписать логику игры в рамки. А надо наоборот — адаптировать движок под выражение задуманной игровой логики.

Аудио

Звуковые эффекты и музыка здесь разделены, хотя и прячутся под одним названием. Основные необходимые функции — это запуск и остановка звуковых циклов и воспроизведение звуковых эффектов от начала до конца. Этим аудио не ограничивается, но даже с двумя базовыми опциями можно далеко продвинуться. Минус в том, что стандартные звуковые фреймворки (FMod and Wwise) — коммерческие и с кучей лицензионных ограничений. Однако большинство ресурсов с открытым кодом раздражают неудобством (передаю привет OpenAL). Сам я использую FAudio — на мой вкус, простая и комфортная в использовании база для построения сложных звуковых механик. 

Загрузка и управление файлами

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

Нетворкинг

Окей, нетворкинг (онлайн-мультиплеер) — это ОЧЕНЬ опционально. Если не планируется режим p2p, то и не заморачивайтесь. Однако эту систему чрезвычайно сложно встроить в движок, который разработан не с расчетом на многопользовательские игры. Поэтому, если вы планируете или допускаете добавление мультиплеера, подготовьте почву заранее, потому что иначе придется переделывать все системы. 

Это базовый набор систем, которые входят в игровой движок. Другие варианты типа обнаружения столкновений, физики, сериализации, анимации и UI уже опциональны. Они распространены, поэтому входят в большинство движков, но для создания игр не обязательны. Например, предотвращение столкновений можно обеспечить при помощи математических утилит и прописать алгоритм в коде игры. Простейшую гравитацию и ускорение можно настроить без физических движков типа Box2D or Bullet. А полная сериализация вообще лишняя, если нужно попросту сохранить чекпойнт. 

В самописном движке однозначно будет меньше систем и функций, чем в универсальном коммерческом. Такова цель! Unity и Unreal — огромные монолиты, и каждая отдельная игра использует лишь малую часть предложенных опций. Добавляйте только то, что нужно для вашего конкретного кейса и сосредоточьтесь на том, чтобы сделать инструменты разработки лучше и комфортнее в использовании. 

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

Как?

Итак, вы взвесили за и против, поняли, чего хотите, и решили все-таки взяться за создание движка. И как же это сделать?

Сразу к делу: делайте игру параллельно с разработкой движка. Это правило нельзя нарушать. Изучите основы как можно скорее и сразу же начинайте создавать на этой базе игру. Движок — ничто без игры. 

Это необходимо, потому что функционал движка должен соответствовать потребностям сделанных на нем игр. Нельзя понять, как построить хорошую анимационную систему, если проект не требует сложной анимации. Слабые места движка проявляются в процессе написания игры. Может быть, нужна древовидная система, благодаря которой дальние объекты не будут рендериться, пока не приблизятся на определенное расстояние? Я не знаю, и вы не узнаете, пока не соберете игровой уровень, который будет страшно зависать. И даже тогда проблема может оказаться не в обновлении объектов — чтобы понять, надо проверить. 

Не программируйте того, что не нужно. Если единственный UI в игре — кнопка Play в главном меню, поздравляю! Не придется создавать мудреный пользовательский интерфейс. В The End Is Nigh нет ни физического движка, ни детектора столкновений. Там даже нет камеры, потому что она там не нужна. Я использовал электронную таблицу .csv, чтобы собрать карту мира, вместо всяких сложных редакторов. Делается легко и нормально работает.

Не буду вдаваться в подробности реализации — способов слишком много, каждый подходит для определенных случаев. Нет «наилучшего варианта рендеринга» или «самого правильного способа управления объектами». Все зависит от игры. Начинайте с основ и расширяйтесь по мере необходимости.

Что касается языков программирования — выбирайте, каким лучше владеете. Разработка движка — сама по себе непроста, а если делать это параллельно с изучением С++, обе эти задачи станут в два раза сложнее. C# идеально подойдет для создания движка. Медленнее, чем на С++, но не критично. Более медленный язык типа Python может вызвать затруднения, если в игре много движущихся объектов… но для некоторых игр пойдет. Используйте, что удобно. 

И еще — с первой попытки идеально не получится. Моей первой игрой на самописном движке стала Closure, и в ней полный бардак (забавно, что ее номинировали на награду «Техническое совершенство» на фестивале независимых игр в 2010 году). Системы рендеринга и обновления вдвоем обрабатывали всю игру. Добавлять новые объекты было крайне трудоемко, приходилось дописывать кучу кода и  работать с кривыми редакторами анимации, так что в итоге осталось с дюжину интерактивных предметов. У некоторых из них было несколько вариаций, кардинально менявших поведение объекта — это было проще, чем добавлять новые. Так что прожекторы, зеркала и турели по сути один и тот же объект! 

Но с ошибками приходит и опыт. Движок Closure написан кое-как, но оказался достаточно хорош, чтобы запустить игру на PS3. Идея переписать некоторые части движка была заманчивой, но это лишь отложило бы выход игры. Вместо этого я писал заметки о том, что получилось плохо, чтобы учесть ошибки в следующий раз. Особенно о том, что мешало непосредственно созданию игры. То же и с The End is Nigh. В ее движке (который, кстати, НАМНОГО лучше, чем в Closure) все равно была куча ошибок, которые я решал, стиснув зубы. Как только игра вышла, я сразу начал улучшать движок для следующего проекта, исправлять раздражающие баги и добавлять новые функции.  

И так раз за разом: учишься, создаешь игру, запускаешь, и все по новой. До тех пор, пока движок не станет действительно хорош. 

Не стал вдаваться в технические подробности, как внедрить в движок каждую отдельную систему. Это зависит от конкретных вариантов использования, есть сотни способов — и каждый из них правильный. Понять, что вам подходит — ВОТ в чем суть разработки движка, с таким настроем стоит браться за создание собственных проектов.

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

Как я создал собственный 3D движок и игру на нём за 20 месяцев / Хабр

Эту статью я написал для своего блога в октябре 2017 года.

Речь идёт об игре Speebot, которая сейчас выпущена в Steam. Бесплатная demo версия прилагается.

Я разрабатывал эту игру с января 2016 года в своё свободное время в одиночку. Мною выполнено всё программирование, дизайн игрового процесса, создание графики и музыки. Кроме того, я написал собственный игровой движок с нуля.

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

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

Универсальные игровые движки называются так, потому что они предназначены для общего использования, и в них заложены функции, которые не всем нужны. Это неизбежно приводит к «раздуванию» кода, и к замедлению производительности игр.

Второе преимущество — это контроль самого процесса разработки. Я считаю, что инструментарий должен быть по-максимуму удобным для разработчика. Что является удобным — зависит от самого типа данной игры. Например, для Speebot — это встроенный редактор уровней, который позволяет быстро создавать новые уровни и незамедлительно их тестировать.

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

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

Ну и наконец: написание собственного движка — это очень интересно.

Разработка движка началась в январе 2016 года. Я назвал его YUME («мечта» по-японски). Он написан на Haxe, C++ и OpenGL. Я использую модифицированную версию библиотеки Lime, которая включает в себя несколько полезных функций, например, позволяет загружать ресурсы и открывает доступ к OpenGL.

Вот так движок выглядел после первой недели разработки.

До начала создания движка я почти ничего не знал о разработке 3D игр. Нужно было разбираться в OpenGL читая документацию, форумы и уроки, предназначенные для других языков (Java и C++). Через пару месяцев у меня получился довольно стабильный 3D-визуализатор.

Кроме самого 3D-визуализатора, нужно было с нуля создать множество разных систем: 2D-визуализатор, машину состояний, систему временных шагов (об этом позже), систему интерфейсов, систему управления мышью, клавиатурой и джойстиками, динамические тени, 3D звуковую систему (используя OpenAL), загрузку моделей (в собственном формате, основанном на IQM), «скелетные» анимации, иерархию объектов, эффект зеркального отражения в реальном времени, отображения текста и так далее.

В конце концов, получилась 3D библиотека, которую можно использовать для чего-то конкретного. Многое из того, что я перечислил, присутствует и в других движках, но в YUME есть несколько отличий. Одно из них — система временных шагов.

Система временных шагов гарантирует, что движок обрабатывает и показывает кадры игры с определённым интервалом. В YUME нет ограничения по количеству кадров в секунду, т.е. нет привязанности к 30 или 60 кадрам в секунду. Частота кадров может быть любая, а игра всё равно будет работать с одной и той же скоростью, потому что частота обновления логики не связана с частотой обновления экрана. На компьютерах разных мощностей может быть разная производительность, и время для показа одного кадра может быть любым. А логика всегда привязана к частоте 62.5 циклов в секунду (16 миллисекунд на каждый цикл). В этом основной принцип системы временных шагов, хотя есть некоторые крайние случаи.

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

Ранняя версия YUME.

У меня была готовая библиотека, но пока ещё не движок. Пришла пора начать разрабатывать игру, и принимать решения о нужных функциях. К тому времени у меня уже было несколько идей, и я знал, что хотел попробовать поэкспериментировать с 3D «плитками».

Я начал создавать систему игровых уровней, которая использовала что-то похожее на 2D плитки (tilemaps), но с одним дополнительным измерением. Получается, что уровень можно сложить из «кубиков», как конструктор. Я создал редактор карт, чтобы ускорить процесс создания уровней. В итоге этот редактор попал в финальную версию игры и доступен каждому игроку.

Движок автоматически определяет, какую 3D модель использовать для отображения каждой плитки, в зависимости от соседних плиток. Придумал способ, как объединить все плитки в одну общую 3D модель, чтобы видеокарте не нужно было рисовать каждую плитку индивидуально. Вся карта рисуется за один раз, что очень сильно улучшает производительность.

Уровни можно редактировать и тестировать сразу. Для продуктивности — то что нужно.

Я написал простую систему игровой физики и начал экспериментировать с игровым процессом. Через несколько недель был готов первый прототип игры, в котором игрок мог перемещать цилиндр по 3D уровню.

Прототип Speebot в июле 2016 года.

YUME продолжал развиваться параллельно с разработкой Speebot (примерно в это время я выбрал такое название для игры). Было найдено и устранено несколько проблем с архитектурой движка, добавилось несколько новых функций: физика, частицы, отражения на поверхности воды, инструменты для анимации камеры, интерактивные объекты… Постепенно библиотека эволюционировала в игровой движок.

Я продолжал добавлять новые элементы игрового процесса, оставляя элементы, которые казались мне интересными, и избавляясь от лишнего. После некоторых экспериментов с художественным направлением графики игры я создал персонажа в Blender — маленького робота с одним колесом. Персонаж нарисован и анимирован в мультяшном стиле.

В это время я уже работал в основном над самой игрой, а не над движком. Я продолжал создавать новые уровни, декорации, персонажи и элементы игры.

В конце 2016 года я сделал паузу от разработки игры, и посвятил несколько месяцев изучению и практике написания музыки. У меня нет музыкального образования, но это — моё хобби. У меня уже был небольшой опыт в композиции музыки для моей предыдущей игры Hypnorain, но я хотел улучшить свои навыки, поэтому снова погрузился в изучение музыкальной теории. Для композиции музыки я использовал программу SunVox, которая является виртуальным модульным синтезатором. В финальной версии игры Speebot всего 23 трека, которые вместе составляют более часа оригинальной музыки. Я удовлетворён результатом, и продолжу улучшать свои навыки для следующей игры.

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

После выпуска нескольких демо версий, обработки отзывов от игроков и улучшения игры, Speebot был выпущен в октябре 2017 года. В финальной версии игры 200 уровней, 4 мира, редактор пользовательских уровней, несколько дополнительных режимов игры, и много другого дополнительного контента.

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

Я продолжу использовать и развивать свой движок YUME в своих будущих играх, и уже начал работать над своим следующим проектом.


После написания этой статьи я разработал и выпустил ещё две игры на этом движке: сюжетная приключенческая игра Phantom Path, и игра-головоломка Pilie Pals.

Как построить двигатель

| Практическое руководство — Двигатель и трансмиссия

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

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

За прошедшие годы Car Craft написала бесчисленное количество историй о о том, как построить двигатель мощностью в миллион лошадиных сил и как заставить свой V8 выдавать невероятный крутящий момент. Иногда, однако, эти истории слишком технологичны и/или требуют модов, которые слишком дороги для среднего автопроизводителя. Таким образом, эта техническая функция возвращается к основам. В нем содержится широкий спектр процедур сборки двигателя, советы и рекомендации по сборке. Данный совет является общей информацией и применим к большинству двигателей V8 американского производства, выпускаемых крупными производителями автомобилей, такими как Chevrolet, Chrysler/Dodge, Ford, Buick, Olds и Pontiac.

Важно помнить, что успешная сборка вашего первого двигателя — это не ракетостроение — это просто вопрос тщательной работы и пристального внимания к деталям. Просто помните, что если у вас есть вопрос по сборке или вы не уверены в спецификации крутящего момента, не гадайте, найдите правильный ответ. Разнообразные источники могут дать ответы на ваши вопросы по двигателестроению. Их можно найти в таких местах, как страницы журнала Car Craft, руководство по двигателю (например, Chilton) для автомобиля того года/типа, которым вы владеете, или связавшись с производителем соответствующей детали. Например, если вы не знаете, как отрегулировать зазор клапана на вашем новом уличном/полосном распределительном валу, позвоните в службу технической поддержки компании-производителя кулачков и спросите у компании из первых рук. Задавание вопросов первым помогает исключить ошибки, потраченное впустую время и потраченные впустую деньги.

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

А пока ознакомьтесь с сопровождающими фотографиями и подписями, а также A-B-C сборки двигателя в списке и галерее изображений ниже.

  • Шаг 1: Выбирайте бюджетные, надежные модификации, обеспечивающие отличные дорожные характеристики.
  • Шаг 2: Решите, как ваш автомобиль будет управляться большую часть времени, и соответственно выберите компоненты двигателя.
  • Шаг 3: Проведите хонингование блока цилиндров с установленной нажимной пластиной, если это возможно.
  • Шаг 4: Простой процесс механической обработки в домашних условиях включает в себя нарезание резьбы во всех отверстиях под болты на блоке цилиндров.
  • Этап 5. Декинг блока цилиндров позволяет получить более ровную и плоскую поверхность деки, что способствует лучшей герметизации цилиндра
  • Шаг 6: Промойте блок цилиндров, коленчатый вал и шатуны мыльной водой.
  • Шаг 7: Покрасьте блок цилиндров снаружи высокотемпературной краской.
  • Шаг 8: Выровняйте-расточите главный блок цилиндров.
  • Шаг 9: Затяните болты основной крышки постепенно в правильной последовательности с помощью динамометрического ключа профессионального качества.
  • Шаг 10: Установите коренной подшипник в блок цилиндров насухо.
  • Шаг 11: Осторожно установите коленчатый вал на место, стараясь не повредить коренные подшипники.
  • Шаг 12: Чтобы правильно совместить распределительный вал с коленчатым валом, совместите шестерни цепи привода ГРМ так, чтобы две маленькие точки находились рядом друг с другом.
  • Шаг 13: При использовании гидравлического распределительного вала затяните гайку коромысла до нулевого зазора, а затем затяните гайку еще на один оборот.
  • Шаг 14: Установите циферблатный индикатор в отверстие подъемника (этот циферблатный индикатор плотно удерживается в отверстии подъемника с помощью уплотнительных колец, установленных на валу индикатора).
  • Шаг 15: Для регулировки распределительного вала начните с использования циферблатного индикатора (стрелка A), чтобы определить, когда поршень № 1 находится в верхней мертвой точке (ВМТ). Затем установите градусное колесо (стрелка B) на конец коленчатого вала. Установите градусный указатель кулачка (стрелка C) так, чтобы он совпал с нулевой отметкой на градусном колесе.
  • Шаг 16: Всегда покупайте высококачественные прокладки от известного производителя.
  • Шаг 17: Чтобы убедиться, что датчик остается надежно прикрепленным к масляному насосу (и в надлежащей фазе с ним), приварите их прихваточным швом.
  • Шаг 18: Первые 10 минут обкатки двигателя являются самыми важными. Поддерживайте обороты двигателя в диапазоне 2000–2500 об/мин и постоянно контролируйте состояние двигателя (например, давление топлива и масла, а также угол опережения зажигания).
  • Шаг 19: Настоятельно рекомендуется отбалансировать детали двигателя, составляющие вращающийся узел.
Популярные страницы
  • Женщины, которые рассказывают истории MotorTrend: Алекс Тейлор
  • Новый проекционный панорамный дисплей BMW лучше экрана приборной панели?
  • 2024 Hyundai Ioniq 5 N Prototype Drive: создание чего-то особенного
  • В нашем Hyundai Ioniq 5 отсутствует один ключевой момент, который может быть исправлен в ближайшее время Поездка и поп-ап Топ
Популярные страницы
  • Женщины, которые рассказывают истории MotorTrend: Алекс Тейлор
  • Новый проекционный панорамный дисплей BMW лучше экрана приборной панели?
  • 2024 Hyundai Ioniq 5 N Prototype Drive: создание чего-то особенного
  • В нашем Hyundai Ioniq 5 отсутствует один ключевой момент, который может быть исправлен в ближайшее время Поездка и поп-ап Топ

Сборка высокопроизводительного двигателя.

Как собрать свой первый двигатель

| Практическое руководство — Двигатель и трансмиссия

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

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

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

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

Просто потяни за штуку Все же лучше вытащить двигатель из машины, чем купить его где-нибудь еще. Причина проста — стоимость. Каждая деталь, входящая в состав комплектного двигателя, не обязательно покупать, а разбитые автомобили работали и ездили прямо перед тем, как оказаться во дворе. Во время наших поисков мы наткнулись на два одинаковых разбитых Chevy Caprices 74-го года выпуска и нашли два полных 400-кубовых двигателя. Мы решили, что это знак.

Итак, как узнать, исправен ли блок? Когда мы проверяем двигатель, мы всегда приносим с собой головку кривошипа и инструмент для валка, компрессометр и циферблатный индикатор. На большинстве ярдов спереди будет стопка аккумуляторов для некоторой мощности запуска. Проверните двигатель пять или шесть раз и измерьте максимальное значение компрессометра. Цилиндры должны быть в пределах 10 процентов друг от друга. Скорее всего, головки не являются отличным литьем, поэтому мы их снимаем и проверяем отверстие цилиндра на износ и конусность. Математика рабочего объема такова: рабочий объем = число пи / 4 х диаметр цилиндра 2 х ход поршня х количество цилиндров. Оттуда вы можете определить диаметр цилиндра (диаметр = рабочий объем / (пи / 4 х ход х количество цилиндров). В нашем случае это было 4,125 дюйма.

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

Самая большая шумиха в механическом цехе — это трещины в блоке, особенно на 400-х с паровыми отверстиями и сиамизированными (тонкими) стенками цилиндров. Маленькие трещины стоят того, чтобы рискнуть, но большие — это смерть и очевидны по следу ржавчины по центру канала ствола или между головкой болта и стенкой цилиндра. Ржавчина означает, что вода каким-то образом попала в канал ствола. Ищите также трещины в долине подъемника.

Мы выбросили головки и отвезли один из двигателей в JMS Racing для очистки и проверки. В механическом цехе вам скажут, нужно ли расточить блок и можно ли спасти коленчатый вал. Кажется очевидным, но это позволит предсказать детали, которые вам понадобятся, чтобы получить правильную степень сжатия, диаметр поршня и высоту деки.

Мы стараемся заказывать подшипники, кольца и прокладки в механическом цехе и забирать их, когда машина готова. Экономит много времени.

Математика (500) Обычно мы начинаем с эмпирического правила степени сжатия для создания безнаддувного двигателя. Для 350-дюймового двигателя с современными алюминиевыми головками и кулачком продолжительностью более 220 градусов вы можете получить степень сжатия около 10,0: 1. Это предполагает, что площадь закалки составляет около 0,040 дюйма, и вы будете использовать бензин с октановым числом 92 или выше. Зона охлаждения представляет собой пространство между плоской частью поршня и плоской частью головки вне камеры сгорания. Когда поршни достигают верхней мертвой точки (ВМТ), воздух и топливо выталкиваются в камеру сгорания, увеличивая турбулентность и уменьшая детонацию. В современных конструкциях головок для этого используется камера сгорания в форме почки.

Выбор кулачка также снижает склонность двигателя к детонации. По мере того, как кулачок увеличивается в продолжительности, точка закрытия впускного клапана перемещается позже. Если вы возьмете два кулачка, один с точкой закрытия впуска 54 градуса после нижней мертвой точки (ABDC), а другой с точкой закрытия 60 градусов ABDC, распределительный вал, закрывающий впуск раньше (в данном случае 54 градуса), создаст больше давление в цилиндре, чем распределительный вал с более поздним закрытием и более продолжительным сроком службы, и будет более склонен к детонации при равных статических степенях сжатия. Идеальная компрессия при проворачивании составляет около 180-200 фунтов на кв.2 октан. Кроме того, при той же продолжительности увеличение LDA уменьшает количество перекрытий, а также закрывает впуск позже на градусы запуска, уменьшая готовность двигателя к детонации и увеличивая пиковую мощность.

Итак, имея теорию в руках, мы решили создать короткий блок с кулачком, который не будет стимулировать пинг на 92-м октановом числе с гашением 0,040 и сжатием 10,5:1. Прежде чем что-либо заказывать, мы позвонили в JMS, чтобы узнать подробности о двигателе. Они сказали, что кривошип нужно повернуть на 10/20, 0,010 дюйма на шатунах и 0,020 дюйма на главной, и проверили биение с помощью внутреннего микрометра, чтобы измерить отверстие чуть ниже деки, снова в середине отверстия, и, наконец, внизу. Механические мастерские расточат двигатель с точностью до 0,005 от окончательного размера отверстия, а затем обработают последние 0,005 с помощью хонингования. Наш двигатель нужно было расточить на 0,030 до окончательного размера 4,155 дюйма. Зная это, мы вычислили комбинацию штока и поршня.

Производители поршней обычно указывают примерную степень сжатия, основанную на размерах камеры сгорания головки блока цилиндров. Наши головки цилиндров — это AFR 210, которые мы купили с камерами объемом 67 куб. Быстрый поиск в Интернете дал нам две разные готовые комбинации поршней, которые оценивали степень сжатия от 10,0: 1 до почти 12,0: 1. Степень сжатия определяется отношением всего объема цилиндра с поршнем в нижней мертвой точке (НМТ) к объему цилиндра в ВМТ. Мы определили фактическую степень сжатия, добавив объем цилиндра к объему камеры, а затем разделив его на объем цилиндра. Объем цилиндра легко рассчитать, это просто формула рабочего объема без кратного восьми (пи / 4 (0,7853) х 4,155 х 4,155 х 3,750 = 50,84). Это дало нам объем цилиндра в кубических дюймах, который можно преобразовать в сантиметры, умножив каждое измерение на коэффициент преобразования 2,54 и повторив формулу (0,7853 x 10,550 x 10,550 x 9)..525). Это дало нам общий объем цилиндров 832,540 куб.см. Чтобы получить объем камеры, нам нужно было просто добавить объем камеры 67 куб. см к высоте прокладки и поршня. Прокладка была 0,039. В пересчете на сантиметры получилось 0,099. Затем мы перевели в объем по старой формуле 0,7853 х 10,55 х 10,55 х 0,099 = 8,653. Чтобы получить глубину поршня в цилиндре, нам нужна была высота палубы блока из механического цеха за вычетом общей высоты комбинации поршень-шток. Шток, который мы выбрали, составляет 5,70 дюйма, половина хода — 1,875, а высота сжатия поршня — 1,425, поэтому общая высота равна 9. 0,00 дюйма. Мы запросили у механического цеха высоту деки 9,005 после обработки, которая должна поместить наш поршень 0,005 в отверстие. В пересчете на кубические сантиметры к объему камеры добавились дополнительные 1110 кубических сантиметров. Наконец, поршни имели два сброса клапана 8cc.

Окончательный результат равен объему цилиндра плюс общий объем камеры, деленный на общий объем камеры (832,540 + 92,763 / 92,763 = 9,97:1). Это практически то, ради чего мы стреляли, и, скорее всего, оно не взорвется. Мы увидим.

Это довольно стандартная штука. Тяга представляет собой 5,7-дюймовую двутавровую балку с болтами ARP, которые мы без проблем использовали на других мулах.
Детали и цены
Описание Номер детали Источник Цена
400 мл, малый блок Н/Д Выберите свою часть 80,00 $
6-дюймовые цифровые штангенциркули ПОВ256400 Электростанции 49,95 $
Компрессометр ПОВ301050 Электростанции 19,95 $
Головка кривошипа ПОВ102050 Электростанции 14,95 $
Плоский распределительный вал 12-564-4 Гонки на высшем уровне 119,95 $
Гидрораспределительный вал 12-433-8 Гонки на высшем уровне 245,88 $
Гидрораспределительный вал 12-443-8 Гонки на высшем уровне 245,88 $
Кованые поршни Speed-Pro ЛВ2606Ф30 Гонки на высшем уровне 399,60 $
Стержни двутавровой балки 6570021 Северные автозапчасти 349,00 $
Итого 1 033,40 долл. США*
*Роликовые кулачки не включены в окончательную цену.

Труд
Описание Цена
Выровненное отверстие $125
Расточка и хонингование 120 долларов
Палуба 100 долларов
Горячий бак и проверка $35
Итого: 380 $

Настольный Dyno После того, как мы выяснили степень сжатия, пришло время выяснить, сколько энергии мы будем производить. Для этого мы использовали программное обеспечение Comp Cams DynoSim. Программа разделена на шесть разделов. Первый раздел позволил нам выбрать объем двигателя с увеличенным отверстием, а также предоставил ход поршня и рассчитал общий рабочий объем в зависимости от марки и модели двигателя.

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

Мы знаем, что заставили вас определять степень сжатия старомодным способом, и вы, вероятно, знаете, что программное обеспечение dyno имеет встроенный калькулятор степени сжатия. это, и наша математика была в пределах 0,004 от калькулятора, так что мы знаем, что это правильно.

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

Секция кулачка очень детализирована и обеспечивает отличный контроль. Вы можете зайти на веб-сайт Comp Cams и загрузить пользовательский профиль или ввести индивидуальные характеристики синхронизации кулачка в Cam Manager. Мы попробовали три разных кулачковых шлифования и разместили результаты на боковой панели Dyno Results. Чтобы проверить точность DynoSim, мы собираемся запустить те же камеры на динамометрическом стенде в Westech Performance после того, как двигатель будет построен, чтобы определить, правильно ли программа работает.

В следующем месяце, во второй части этой серии, мы сбалансируем вращающийся узел и соберем шорт-блок.

*Все три симулятора двигателя были запущены с использованием открытого выхлопа с маленькой трубой и двухплоскостного стандартного пола.

Результаты Dynosim CAM 12-564-4 Гидравлический плоский табуна0155 1000 69 362 1 500 119 418 2000 173 455 2 500 220 462 3000 264 462 3 500 323 484 4000 371 488 4 500 412 481 5000 440 462 5 500 457 436 6000 460 403 6 500 449 363

Кулачок 12-433-8 Гидравлический ролик 236/242 продолжительность при 0,050 0,520/0,540 подъем 110 LSA

об/мин Horsepower Torque
1,000 62 327
1,500 109 382
2,000 162 424
2,500 208 436
3000 251 440
3,500 315 473
4,000 370 486
4,500 417 487
5,000 454 476
5,500 479 458
6000 486 426
6,500 482 389

Cam 12-443-8 Hydraulic Roller 242/248 duration at 0. 050 0.540/0.562 lift 110 LSA

RPM Horsepower Крутящий момент
1000 58 303
1 500 105 368
2000 154 406
2 500 198 417
3000 240 420
3 500 305 457
4000 361 474
4 500 412 481
5000 448 471
5 500 473 452
6000 487 426
6 500 485 392

ИСТОЧНИКИ
Кулачки компаса Электроинструменты/Alltrade
Мемфис, Теннесси Лонг-Бич, Калифорния
800/999-0853 800/368-6653
compcams.
Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

© 2019 Штирлиц Сеть печатных салонов в Перми

Цифровая печать, цветное и черно-белое копирование документов, сканирование документов, ризография в Перми.