itch.io is community of indie game creators and players

Devlogs

Як змусити поршень рухатися неправильно (і чому це чути)

OM636 Engine Simulator
A browser game made in HTML5

Найпростіший спосіб намалювати працюючий двигун — прив’язати поршень до синуса. Один рядок коду, виглядає переконливо, і майже ніхто не помітить різниці. Я спробував саме так — і зупинився на першій же хвилині, коли ввімкнув сповільнення. Синус бреше, і бреше несиметрично Поршень не гойдається рівномірно. Шатун має скінченну довжину, і через це верхня половина ходу проходиться швидше за нижню. Реальне положення: y = R·cos(θ) + √(L² − R²·sin²(θ)) де R — радіус кривошипа (у OM636 це 50 мм, звідси хід 100 мм), L — довжина шатуна. Відношення L/R тут приблизно 3,5 — доволі «коротке», тому асиметрія помітна на око. Поршень зависає біля верхньої мертвої точки помітно довше, ніж очікуєш. І це не косметика: саме там відбувається впорскування, саме через це форкамера встигає зробити свою справу. Коли я замінив синус на цю формулу, змінилося дещо неочікуване — ритм звуку. Звук як наслідок, а не як файл Спокуса тут теж очевидна: взяти запис мотора, зациклити, змінювати playbackRate від обертів. Працює, звучить непогано, і розсипається на сповільненні — бо на 0.04× швидкості зациклений семпл перетворюється на гудіння. Тому в симуляторі немає жодного аудіофайлу. Кожен циліндр має власну фазу (порядок роботи 1-3-4-2, зсуви 360/540/180/0 градусів), і коли фаза перетинає межу робочого ходу, це подія. Подія породжує удар: короткий сплеск білого шуму через bandpass на 125 Гц із загасанням 110 мс, плюс окремий високочастотний «цокіт» на 2300 Гц — той самий дизельний брязкіт від зазорів у клапанах OHV. Поверх — низька пилка на частоті спалахів. Наслідок: звук не треба синхронізувати з картинкою. Він і є картинкою, просто в іншій модальності. Сповільнюєте час — удари роз’їжджаються і чутно чотири окремі постріли замість гулу. Прибираєте подачу — обертів менше, інтервали ростуть, з’являється та сама нерівність холостого ходу, яку я навіть не програмував окремо. Розподільний вал я спочатку зробив неправильно Друга помилка була дурнішою. Я крутив кулачки з тією ж швидкістю, що й колінвал. Візуально майже нормально, поки не почнеш дивитися на конкретний циліндр — і тоді видно, що клапани відкриваються двічі за цикл. Дизель — чотиритактний, повний цикл займає два оберти колінвала, тому вал розподілу крутиться рівно вдвічі повільніше. Я лишив цю передачу 2:1 видимою зліва на екрані замість того, щоб сховати її в кожух: це, мабуть, найкорисніша річ у всьому розрізі для того, хто вперше розбирається, як працює чотиритактник. Паливо як параметри, а не як меню П’ять видів палива — не косметичні пресети. Кожен має чотири числа: множник часу запуску, димність, віддача потужності й змащувальна здатність. Останнє найцікавіше: гас майже не димить і чудово заводиться на морозі, тому здається найкращим вибором — поки не побачиш лічильник зносу ПНВТ, який росте втричі швидше. Рослинна олія взагалі не заведе холодний двигун, треба спершу прогріти на дизелі до 60 °C. Ніде не написано «гас поганий». Гравець просто бачить два лічильники й робить висновок сам. Це, здається, працює краще за будь-який туторіал. Що далі Наступним хочу зробити режим механіка: регулювання клапанних зазорів на слух, бо саме цим цей мотор і живий досі. Якщо у вас є досвід із реальним OM636 і я щось наплутав у геометрії — напишіть, виправлю.

Files

  • index.html 30 kB
    14 days ago
Leave a comment