Аналог My Winter Car на Python. Октябрь 1998 года, городок Кляйнбрук в Нижней Саксонии. У вас есть однокомнатная квартира и ржавая ВАЗ 2102 1979 года, которая шесть лет простояла в гараже.
Игра трёхмерная (движок Ursina / Panda3D): вид от первого лица, вождение из салона или с камерой сзади.
Старая 2D-версия с видом сверху тоже осталась (main2d.py), но в ней есть только ВАЗ, цель с AE86 доступна только в 3D.
make install # или: pip3 install -r requirements.txt
make run # 3D-версия (python3 main.py)
make run2d # 2D-версия (python3 main2d.py)При первом запуске звуки генерируются в папку sounds/, это занимает пару секунд.
При первом запуске игра на английском. Язык меняется в главном меню, кнопка Language: открывается список всех
языков из папки locales/, выбранный применяется сразу ко всему (меню, HUD, подсказки, сообщения, предметы, машины,
детали, вывески в 3D-мире) и запоминается в settings.json — после перезапуска не сбрасывается.
Как устроено (i18n.py):
- Все тексты в коде проходят через
T(). Ключ перевода — исходный русский текст, как в gettext:T("Новая игра"),T("Купили {name} за {price:.2f} ₽", name=n, price=p). - Переводы —
locales/<код>.json:{"_meta": {"name": "English"}, "strings": {"Новая игра": "New game", ...}}. Русский — исходный язык, его строки берутся прямо из кода (ru.jsonнужен только для названия в списке). - Нет перевода (или он пустой / с неверными
{плейсхолдерами}) — показывается английский, нет и его — исходный текст. - В сохранение тексты пишутся как ключи, а не на текущем языке: сохранились на русском — загрузятся на английском.
Новый язык: скопируйте locales/en.json в locales/de.json, поменяйте _meta.name на «Deutsch» и переведите
значения (ключи и {плейсхолдеры} не трогайте). Язык сам появится в меню. Проверка: make i18n lang=de
(покажет непереведённые строки и ошибки в плейсхолдерах), python3 i18n.py update de — дописать в файл
новые строки, появившиеся в коде (пустыми — до перевода в игре будет английский).
Новый текст в коде: пишите его через T("...") (не f-строкой: T("Осталось {n} мин", n=n)) и добавьте
перевод в locales/en.json — make i18n покажет, чего не хватает.
Главная цель — купить и починить Toyota AE86 (Sprinter Trueno 1985, «панда» с поднимающимися фарами). Она гниёт на авторазборке Ковальского прямо за вашим гаражом: въезд с Хауптштрассе, справа от гаража, над воротами жёлтая вывеска. Ковальский отдаёт её бесплатно: деньги нужны на запчасти.
- ВАЗ 2102 со старта на ходу, с номерами
KB-VZ 102и TÜV до весны, но ржавый насквозь. - Брошенные машины можно забрать себе. У загородных дорог стоят брошенные машины: на карте (M) это серые точки. Подойдите и нажмите E, чтобы осмотреть машину. Видно модель, пробег, состояние, что сломано и чего нет. Кнопка «Забрать себе» ничего не стоит. После этого машина ваша: дотащите её тросом (T) к гаражу, восстанавливайте, пройдите TÜV, получите номера и ездите. На карте ваши находки голубые. Ненужную можно сдать на лом у пресса Ковальского (35–120 ₽). Свою машину на лом сдать можно только после подтверждения. Ещё работа: склад и доставка пиццы. Заброшенные гаражи и сараи (6 штук, на карте это коричневые квадраты): у ворот нажмите E, чтобы открыть. Часть ворот заперта, для них нужна монтировка (12 ₽, магазин запчастей «Восток» или заправка). Внутри забытая машина: она стояла под крышей, поэтому ржавчины меньше, но пыль, спущенные шины и сухой аккумулятор. Её тоже можно забрать бесплатно. На полках детали для неё и инструменты (E — обыскать, один раз).
- Купите AE86 у Ковальского: подойдите к ней на свалке и нажмите E, или зайдите в контору. Она очень ржавая: пороги в дырах, одно колесо на кирпичах, нет АКБ и глушителя, ремень ГРМ вот-вот порвётся.
- Затащите её на тросе в гараж: трос от «двойки», T у AE86. Или вызовите эвакуатор по телефону. Японские запчасти продаёт автосалон Крюгера (Toyota) в восточном конце Хауптштрассе. Первым делом меняйте ремень ГРМ.
- Сварите пороги и днище, пройдите техосмотр (TÜV), поставьте AE86 на учёт в ратуше (
KB-AE 86). Это победа.
Квартира ваша собственная: квартплаты нет, выселить не могут. На старте новой игры — 3000 ₽. Страховка — 24 ₽ за каждую машину на учёте, списывается каждые 7 дней. Если с героем что-то случится (авария, истощение), он бесплатно очнётся дома — деньги не списываются.
Карта существует целиком, но рисуется и обсчитывается только область вокруг игрока. Настройки — в config.py:
| Параметр | По умолчанию | Что делает |
|---|---|---|
VIEW_DIST |
320 м | дальше этого город, снег, вывески выключаются; туман к этой границе растворяет всё в цвете неба |
CHUNK |
100 м | размер квадратов, на которые нарезана карта |
CAR_VIEW_DIST |
140 м | ближе этого у машин подробная 3D-модель (дальше — модель выгружается, машина остаётся в мире) |
SIM_DIST |
450 м | дальше этого трафик стоит на паузе |
Больше — дальше видно, но тяжелее для компьютера. Физика вашей машины, машины на тросе и всех движущихся машин рядом не отключается никогда.
| Пешком | |
|---|---|
| WASD + мышь | ходить и смотреть (Shift — бежать) |
| E | действие (двери, предметы в квартире, капот, доставка, сдать машину на лом) |
| G | второе действие рядом (например, «Забрать себе», если рядом стоит и своя машина) |
| T | буксировочный трос: привязать брошенную машину / свою AE86 к машине рядом, отвязать |
| R | разобрать машину на запчасти (брошенную, со свалки или свою ненужную) |
| E (прицелом) | действие с тем, на что смотрит перекрестие: открыть/закрыть дверь, сесть на сиденье, капот, багажник, открутить/затянуть болт или гайку, поставить деталь |
| G (прицелом) | снять деталь, у которой откручен весь крепёж |
| F | сесть в машину / выйти |
| Tab | руки: что держите — съесть/выпить, осмотреть, положить, поменять |
| Q / Z / X | поменять предметы между руками / положить из левой / из правой руки |
| M | карта |
| Esc | пауза: сохранить / загрузить |
| - / = | чувствительность мыши |
| За рулём | |
|---|---|
| I (держать) | стартер; нажать ещё раз — заглушить |
| C | подсос у ВАЗ (холодный мотор без него не заведётся; у AE86 впрыск — подсос не нужен) |
| W / S | газ / тормоз |
| A / D | руль |
| Пробел | сцепление (держать, иначе на остановке машина заглохнет) |
| Стрелка вниз | ручник: W + A/D + стрелка вниз на скорости — срыв в занос (дрифт) |
| E на переключателях у руля / [ и ] | левый / правый поворотник (повторно — выключить; после поворота выключается сам) |
| Shift / Ctrl | передача вверх / вниз (1–5, R — задняя, N — нейтраль) |
| L / H | фары / гудок |
| V | вид из салона / камера сзади |
Работа с машиной: подойдите к ней и нажмите E. Откроется капот, камера облетает машину. Мышь с зажатой кнопкой поворачивает камеру, колесо мыши приближает. Сварка и зарядка АКБ доступны только в гараже.
-
Зима (декабрь 1998). Снег лежит неравномерно: на полях и газонах толстым слоем, у стен домов — надувы, вдоль дорог — грязные валы от снегоуборщика (с разрывами у перекрёстков и въездов), на крышах — снег с сосульками (на тёплых крышах подтаял), на ёлках — белые шапки. На самих дорогах снега мало, в основном у кромки. Слякоть — только на дорогах и тротуарах: мокрая, грязная каша до ~10 см. Она объёмная: колёса продавливают колею, по краям выдавливаются валики, следы остаются и постепенно заметаются снегопадом. В слякоти машину тормозит и ведёт, она проседает; на снегу меньше сцепления. Холодный мотор заводится хуже, аккумулятор на морозе слабее.
-
Два подземных гаража — въезды «P» у Хауптштрассе (Рыночная площадь) и у вокзала. Заезжать можно на машине и заходить пешком; по пандусам — на уровень −2. У каждого уровня свой стиль (современный, низкий, старый, бункер), колонны с разметкой, трубы, мигающие и разбитые лампы, лужи, помещения: лестницы, техкомнаты, кладовки-клетки, мойка, склад, обрушенная комната, бомбоубежище. Там стоит 42 машины — меньше ржавые, чем на улице, но с ржавчиной и в салоне; запчастей там меньше, чем машин (ищите в кладовках и на складе).
-
Три заброшенные парковки (бывший Konsum-Markt, Pendlerparkplatz на L 342, двор экспедиции Müller): ржавые и частично разобранные машины, детали на земле (E — подобрать), тележки, покосившиеся фонари, контейнеры, прицепы, погрузчик, бурьян из-под снега.
-
Автоплощадка Вебера (на L 342, за городом): площадка с ценниками. В конторе — список машин с пробегом, состоянием и ценой, можно купить. Продать свою: поставьте её на жёлтую площадку «Ankauf» и зайдите в контору. Находить машины бесплатно по-прежнему можно.
-
Свалка Ковальского расширена: 16 машин-доноров разных категорий (сгнившие, битые, полуразобранные, почти целые, доноры). R — разобрать: двигатель, КПП, колёса, двери, капот, багажник, фары, сиденья и остальное попадают в инвентарь и ставятся на машины той же модели. Мотор и коробку без крана снимают только на свалке или в гараже.
-
Новые модели: Москвич-2140, Volvo 240, BMW E21, Audi 80 (B2), Honda Civic — всего 11 моделей находок плюс ВАЗ и AE86.
-
Работа руками прямо на машине. Двери открываются (E на ручке), сесть — E на сиденье, выйти — E на открытой двери изнутри (F тоже работает). Багажник/задняя дверь откидываются на петлях (внутри — запаска, домкрат, коврик). Капот открывается как раньше и остаётся открытым после меню. У каждой детали свой крепёж (колесо — 4–5 гаек, аккумулятор — 3, ГБЦ — 10+ болтов, поддон — 16...) — он виден на машине: E на болте откручивает/затягивает его, G снимает деталь, когда крепёж отпущен, E на пустом месте ставит деталь из инвентаря «наживлённой». Недокрученное работает плохо: колесо разбалтывается и отваливается, ГБЦ прогорает, поддон течёт, клемма АКБ пропадает. Меню ремонта знает о том же крепеже (строка «Крепёж: 2/4», «Затянуть»).
-
Поворотники: подрулевые переключатели, лампы спереди/сзади/на крыльях, стрелки на щитке, щелчки, автоотключение после поворота. Приборы в салоне работают: спидометр, тахометр, топливо, температура.
-
Ford Mustang 1967 (289 V8) — на площадке Вебера за 8 900 ₽. Комплект Shelby GT500 в автосалоне Крюгера (10 деталей, ~38 700 ₽): Big-Block 428 Cobra Jet, КПП Toploader, подвеска, тормоза, колёса 17", боковой выхлоп, обвес, капот с воздухозаборниками, покраска Pepper Grey с чёрными полосами, салон. Каждая деталь сразу меняет машину; все десять превращают её в «Ford Mustang Shelby GT500 «Eleanor»» (~358 л.с., 0–100 ≈ 5 с).
-
Двигатель «до последнего болта» (E у машины → «Двигатель: разборка и сборка»). У каждого мотора своя раскладка: ГБЦ, прокладка ГБЦ, поршни с кольцами, шатуны, шатунные и коренные вкладыши, коленвал, распредвал(ы), клапаны, клапанные пружины, масляный поддон, масляный насос, масляный фильтр, помпа, термостат, шкив коленвала, крышка ГРМ, цепь или ремень ГРМ с натяжителем, впускной и выпускной коллекторы, топливная рампа (впрыск) или трубки ТНВД (дизель). У двухтактных Trabant и Wartburg — свои (без клапанов и ГРМ). Навесное (генератор, стартер, карбюратор, свечи, трамблёр, радиатор) — как раньше, в «Деталях».
- Порядок как в жизни: к ГБЦ не добраться, пока стоят клапанная крышка, ГРМ и коллекторы; к коленвалу — пока не сняты поддон, шатуны, насос, ГРМ, КПП и сцепление. Меню подсказывает, что мешает; есть «Снять всё мешающее», «Разобрать полностью» и «Собрать из деталей в инвентаре».
- У каждой детали своё состояние, своя цена в магазине запчастей (для каждой модели) и своя 3D-модель в моторном отсеке: сняли клапанную крышку — видно распредвал, сняли ГБЦ — видно поршни.
- Осмотр: Tab → деталь → «осмотреть» (задиры, прогар, «стёрты до меди», вердикт). «Диагностика двигателя» — компрессия по цилиндрам и давление масла с подсказками (прокладка, клапан, кольца, фазы).
- Состояние деталей определяет работу мотора: компрессию и мощность, давление масла, стук вкладышей, перегрев, уход антифриза. Ошибки сборки: ГРМ «на глаз» — мотор троит, а у клапанобойных (AE86, Civic, Audi, W123) гнёт клапаны; ГБЦ «на глаз» — быстро прогорает прокладка; старая прокладка ГБЦ течёт; без масляного насоса нет давления.
- Двигатель можно снять целиком — внутренности уезжают вместе с ним. Доноров на свалке тоже можно разбирать до поршней.
-
Ремонт снизу — лёжа под машиной (
underside.py,under3d.py,under_play.py). Детали низа — масляный поддон и низ двигателя (масляный насос, вкладыши, шатуны, коленвал), КПП, сцепление, выхлоп, амортизаторы, рулевые тяги, стартер — снимаются, ставятся и затягиваются только из-под машины; моторный отсек — только сверху, у открытого капота (из-под машины до аккумулятора не дотянуться). Масло сливают снизу (пробка в поддоне), заливают сверху. Это касается и болтов в мире, и меню работ (там у таких деталей пометка «· снизу»); «Разобрать полностью» снимает всё, что доступно с того места, где вы, и подсказывает, что осталось сделать с другой стороны.- Лечь под машину: посмотрите на низ порога своей машины — E «Лечь под машину». Под машиной: WASD — ползти (сквозь колёса и туда, где низко, не пролезть), мышь — смотреть на днище, E/G — болты и детали снизу (как сверху, но на длину руки), «Работы снизу — меню», F — вылезти (выползти можно и самому — из-под любого борта). Снизу светит переноска; двигатель снизу видно и при закрытом капоте.
- Просвет решает: машина на колёсах — около 17–18 см: пролезают только голова и плечи у порога, мелкий крепёж и слив масла — можно, а КПП, сцепление, коленвал, выхлоп так не снять. Ниже 13 см (спущенные колёса, занижение, слякоть) — не пролезть совсем.
- Домкрат и подставки (магазин «Восток», автосалон Крюгера → расходники): домкрат (59 ₽) поднимает перёд или зад на 30 см — E на точке подъёма внизу бампера; там же — «Поставить на подставки» (29 ₽ пара), домкрат освобождается для другой стороны. На двух парах подставок машина стоит ровно, просвет ~46 см — можно всё. Снять с подставок — снова нужен домкрат. Подъём — и в меню работ («Подъём машины»). Поднятая машина не едет (колёса в воздухе).
- Не лежите под машиной на одном домкрате: во время работы он может соскочить — машина падает, вы сильно ушибаетесь (−45 здоровья), домкрат мнётся.
-
Ремонт где угодно. Двигатель, сцепление и кузов чинятся там, где стоит машина (гараж не нужен). Вмятины после аварий и даже «тотал» выправляются без сварки и металла — домкратом, цепью и кувалдой, дольше; со сваркой и листами металла — быстрее. После рихтовки геометрия, двери/капот/багажник и увод — в норме, TÜV претензий к аварии не имеет. Гниль тоже можно залатать без сварки (выколотка, холодная сварка).
-
Дрифт. На скорости держите W + A или D и дёрните ручник (стрелка вниз), затем отпустите его и держите занос газом и контррулём. Физика с боковым скольжением: шины с кругом трения (тяга и поворот делят одно сцепление), пробуксовка ведущих колёс, перенос веса, самовыравнивание передних колёс в заносе. Задний привод (ВАЗ, BMW E21, Civic, AE86) срывается газом и держит угол; передний привод даёт короткий занос от ручника и сам выравнивается; полный привод (поддерживается физикой) заносит, но вытягивает сам. На снегу и слякоти всё легче, на сухом асфальте слабому ВАЗу мощности на силовой занос не хватает. На приборах — «ЗАНОС 35°».
-
Аварии и деформация кузова. Кузов сминается там, куда пришёлся удар: спереди — бампер, «гармошка» и капот домиком, крылья в складки; сбоку — вдавленные двери; сзади — багажник и бампер. Форма зависит от скорости, угла, препятствия (столб входит глубоко и узко, стена — широко, другая машина — на уровне бампера) и у каждой аварии своя. При сильном ударе бампер висит на одном креплении, погнутая подвеска уводит машину. Ломаются радиатор, фары, двери, мотор, рулевое; TÜV не пропустит битую машину. Рихтовка — в гараже (сварка + листы металла, меню «Кузов»). После очень тяжёлой аварии — «тотал»: своими руками не выправить, стапель у Крюгера стоит 2800 ₽ — обычно дешевле сдать машину на лом. На свалке у Ковальского стоят битые машины с настоящими вмятинами.
-
Honda Civic 1.5 GL (1985): мотор EW 1.5 12V 85 л.с., 5-ступенчатая КПП, 850 кг, 0–100 примерно за 9,5 с. В игре Civic заднеприводный (переделан под дрифт). Встречается редко, но где угодно: у жилых домов, у дорог, в подземных гаражах, на заброшенных парковках, на свалке, в заброшенных гаражах, на площадке Вебера. Иногда прошлый хозяин уже поставил турбину.
-
Тюнинг (турбонаддув для Civic): E у машины → «Тюнинг». Детали продаёт автосалон Крюгера (в списке запчастей Civic): турбокит IHI (1450 ₽, ставится 5 ч в гараже), интеркулер (380 ₽), буст-контроллер (120 ₽). Режимы наддува: «Мягкий» 0.4 бар (~116 л.с., 0–100 ≈ 7,4 с), «Спорт» 0.6 бар (~131 л.с., нужен буст-контроллер), «Гонка» 0.85 бар (~150 л.с.; без интеркулера — детонация и быстрая смерть мотора; TÜV не пропустит). Наддув приходит после ~2500 об/мин с задержкой (турбояма), греет мотор, увеличивает расход и износ двигателя, сцепления и КПП; сама турбина изнашивается, особенно на старом масле. Без турбины Civic — обычная машина. На приборах — стрелка наддува, при сбросе газа слышен «пшшш» перепускного клапана.
-
Шесть моделей брошенных машин, у каждой своя механика и характер:
- Trabant 601: двухтакт 26 л.с., воздушное охлаждение (перегреется, если порвётся ремень вентилятора), дюропластовый кузов (крылья и двери не ржавеют, пороги гниют), рычаг КПП на торпедо; 0–100 примерно за 22 с, около 110 км/ч.
- Wartburg 353: трёхцилиндровый двухтакт 50 л.с., рычаг на руле, передний привод.
- Opel Kadett C: 1.2 OHV 60 л.с., задний привод, классически гниющие пороги и днище.
- VW Golf I: 1.1 50 л.с., хэтчбек, самый цепкий в поворотах, ржавые задние арки.
- Ford Taunus: 1.6 OHC 72 л.с., мягкая подвеска, кренится в поворотах.
- Mercedes W123 200 D: дизель 55 л.с., холодный заводится только с живыми свечами накаливания, мотор почти вечный, на заправке нужно дизтопливо, пробег огромный.
Состояние каждой находки своё: от почти живой до трупа. Двигатель, КПП (изношенная выбивает передачу), сцепление, аккумулятор, электропроводка (гнилая глушит мотор и гасит фары), тормоза, амортизаторы, рулевые тяги (с люфтом машину водит), шины, стекло, кузов. Внешний вид отражает состояние: выцветшая краска, грязь, ржавчина, вмятины, битые стёкла, отсутствующие колёса (машина стоит на кирпичах). Запчасти: восточные машины — в магазине «Восток», западные и Toyota — в автосалоне Крюгера, б/у — у Ковальского. На заправке есть мойка.
-
Две машины. ВАЗ 2102: 64 л.с., 4 передачи, около 130 км/ч. Toyota AE86: 4A-GE 124 л.с., 5 передач, отсечка на 7600 об/мин, 0–100 км/ч примерно за 9 с, около 195 км/ч. У каждой своя 3D-модель, свои запчасти и свой номер. Садитесь и чините ту, что ближе.
-
3D-машина: ржавчина на бортах рисуется по реальному состоянию 8 кузовных панелей и исчезает после сварки. Слева стоит водительская дверь с разборки другого цвета. Колёса крутятся и поворачиваются, спущенное колесо проседает, снятое заменяют кирпичи. Капот открывается: внутри мотор, АКБ, радиатор, генератор. Есть салон с рулём и сиденьями, фары светят ночью, из выхлопа идёт дым: чёрный на подсосе, сизый у изношенного мотора.
-
Физика на реальных цифрах 2102: 64 л.с., передачи 3.753 / 2.303 / 1.493 / 1.0, 0–100 км/ч примерно за 23 с, максимум около 130 км/ч. Бывают пропуски зажигания, машина глохнет на передаче, перегревается, клинит без масла, колодки стираются.
-
Квартира в 3D: кровать (сон и сохранение), холодильник, плита, душ, туалет, телевизор-кинескоп с новостями 1998 года, телефон (пицца, эвакуатор, мама), календарь, ковёр.
-
Город: около 500 домов с черепичными крышами, окна вечером загораются. Есть супермаркет, магазин запчастей «Восток», заправка с навесом, техосмотр, ратуша, дёнер-закусочная, пиццерия (доставка на своей машине), склад (смены по будням с 6 до 9 утра), авторазборка Ковальского (б/у детали), церковь, вокзал, автобан A7 без ограничения скорости.
-
Двери и места: у седанов открываются все 4 двери (E на ручке), обивка дверей одна и та же в открытом и закрытом виде. Сесть можно за руль или на пассажирское место (E на сиденье при открытой двери); с пассажирского места машиной не управляют, можно пересесть за руль или выйти со своей стороны.
-
Багажник — настоящее хранилище: откройте багажник (E) и смотрите внутрь. «Положить в багажник…» — список того, что у вас с собой; вещи лежат внутри коробками, E на коробке — забрать. Содержимое сохраняется.
-
Две руки вместо рюкзака (
hands3d.py): с собой — ровно два предмета, в левой и правой руке; они видны на экране (бутылка, батон, колбаса, пицца, ящик с ключами, деталь...). Взять — E на вещи (на земле, в багажнике, в холодильнике, на стеллаже в гараже) — только в свободную руку; обе заняты — третий предмет не взять. Q — поменять руки, Z / X — положить из левой / правой: в открытый багажник рядом, на стеллаж, иначе на землю.- Еда и питьё из рук: E с едой в руке — рука подносит её ко рту, три укуса; с напитком — поднимает бутылку и пьёт, четыре глотка. Каждый укус/глоток уменьшает предмет, доели — он исчезает из руки. Нет еды в руках — E есть не будет. E сначала делает то, на что вы смотрите (дверь, магазин...), тогда еда — на G.
- Инструменты и материалы для ремонта берутся из рук или с того, что лежит рядом: открытый багажник машины, стеллаж в своём гараже (там с начала игры набор ключей; в багажнике ВАЗ — трос и предохранители). Снятые детали при занятых руках кладутся туда же или на землю. Покупку при занятых руках продавец относит в багажник вашей машины у входа. Старое сохранение: еда — в руки, всё остальное — на стеллаж в гараже.
-
Календарь и сезоны (
calendar_de.py, месяц и год — в верхней строке экрана): даты идут по настоящему календарю — декабрь 1998, январь 1999 и т. д., о смене месяца приходит сообщение. От месяца зависят температура, рассвет и закат, погода (зимой снег, летом дождь), снег на земле: весной он тает, сугробы и слякоть исчезают, дороги перестают скользить; осенью снег возвращается. Листва: зимой лиственные деревья голые (снег на ветках), весной светло-зелёные, летом тёмные, осенью жёлто-рыжие. -
Электрика и предохранители (
electrics.py): у каждой машины настоящий блок предохранителей (у большинства — под панелью слева от руля, у W123 и Taunus — в моторном отсеке у щита). 10 цепей: зажигание, стартер, топливо, приборы, левая и правая фара, габариты, стоп-сигналы, поворотники, звуковой сигнал. Сгорел предохранитель критичной цепи — мотор не заводится или глохнет; некритичной — машина едет, но не горит фара / не мигают поворотники / молчит сигнал.- Предохранитель горит не просто так: КЗ провода — сразу при включении, неисправный потребитель (лампа, реле, бензонасос) — через пару секунд работы. Пока причина не устранена, новый предохранитель сгорит снова. Обрыв и окисленные контакты предохранитель не жгут — просто нет питания.
- Как искать: E на блоке → предохранитель → «Включить цепь и проверить» → «Прозвонить мультиметром». Прозвонка называет участок (моторный отсек у левой фары, под ковриком у порога, багажник у фонарей...), и место загорается на машине красной меткой. E на метке — устранить (ремкомплект проводки, лампа, реле, катушка, сигнал; бензонасос и стартер меняются как обычные детали по болтам). Новый жгут проводки лечит все провода.
- «Жучок» из проволоки не сгорит никогда — но при КЗ плавит проводку; TÜV с ним не пропустит.
- Диагностика в меню работы с машиной показывает все цепи; аварии мнут жгуты в зоне удара, гнилая проводка сама со временем даёт сбои, у найденных машин часто что-то уже не работает. У «двойки» с самого начала барахлит звуковой сигнал, а в багажнике лежит набор предохранителей.
- Полиция и допуск: днём сгоревшая фара никого не волнует, но ночью полиция остановит «одноглазую» машину — штраф и предписание: за 7 дней устранить и пройти повторную проверку на техосмотре (25 ₽), иначе регистрацию аннулируют. Ночью без обеих фар или задних фонарей — «Weiterfahrt untersagt»: номера снимают сразу, путь назад — ремонт → техосмотр → ратуша. Стоп-сигналы и поворотники полиция замечает, когда вы тормозите/поворачиваете рядом.
-
Живой город (
traffic.py,traffic3d.py):- Трафик — 26 машин разных моделей + полиция: это настоящие машины игры (своя масса, мотор, КПП, шины, электрика, вмятины при ударе). Водитель рулит по своей полосе, держит дистанцию (модель IDM), сам переключает передачи, тормозит перед поворотами, на красный останавливается перед переходом, на жёлтый — если успевает остановиться, поворачивая налево — пропускает встречных, на Т-перекрёстке со второстепенной — уступает, пропускает пешеходов, обгоняет по встречке только когда она свободна (запас ≥ 9 с), перекрёсток далеко и хватает запаса скорости, чтобы закончить обгон; не успел — отстаёт и встаёт позади, а не подрезает. На автобане — по левому ряду; перед перестроением «смотрит в зеркало» (соседний ряд свободен и сзади никто не догоняет), налево с автобана поворачивает заранее из левого ряда. На скользком едет медленнее, с большей дистанцией и не тормозит «в пол». Аварийный тормоз учитывает габариты: машина, стоящая наискось, тоже препятствие. Взаимные «пробки» (двое уступают друг другу) разрешаются сами. Ближе 160 м — полная физика и полная 3D-модель, дальше — упрощённое движение по тем же полосам (машины не исчезают). Тупики на краях — выезды из города: машина уезжает и возвращается с другого въезда (только когда вы далеко).
- Светофоры на 4 крестообразных перекрёстках (фазы зелёный/жёлтый/все красные, у пешеходов свои сигналы).
- Уличные гонщики — 3 отдельных водителя на разных машинах (BMW E21, Civic, Mustang): быстрые, резкие обгоны, поздно тормозят, но по тем же правилам и той же физике; газ дозируют и ловят занос контррулём.
- Пешеходы (90): ходят по тротуарам, выбирают путь сами, переходят по переходам на свой сигнал (без светофора — когда машин нет), отскакивают от летящей машины, сквозь машины не проходят; в дождь и снег — с зонтами. Сбить пешехода — штраф и компенсация. Вдали продолжают ходить, в 3D — в пределах ~110 м.
-
Автосервис Шмидта (
service.py,service3d.py) на Индустриштрассе рядом с техосмотром: цех на две ячейки с подъёмниками, подъезд, парковка, приёмка; работает Пн–Пт 7–18, Сб 8–13. Заехать в ячейку, заглушить мотор — E: мастер осматривает (30 мин) и выдаёт список неисправностей по системам со сметой. Ремонт реально восстанавливает машину: внутренности двигателя, КПП и сцепление, подвеску, рулевое, тормоза, шины и давление, кузов (вмятины, геометрия, ржавчина), электрику, замки, жидкости, недостающие детали. Машина стоит в цеху (механики работают), по готовности её выгоняют на парковку сервиса.- Бессрочная гарантия оформлена на все машины (поле в сохранении, не сбрасывается и не продлевается): сервис проверяет её сам — ремонт бесплатно, сколько бы ни было неисправностей.
-
Шины (
tires.py): у каждой шины свой протектор (новая — 8 мм, по закону не меньше 1,6) и давление.- Сцепление каждой оси — из её шин: на сухом протектор почти не важен, на мокром и снегу — решает всё; лысая шина на мокром ловит аквапланирование уже с ~60 км/ч. Недокачанная «плывёт» (руль мягче, держит хуже), перекачанная — маленькое пятно. Разные шины слева и справа тянут машину в сторону.
- Тормоза упираются в сцепление шин: тормозной путь с 80 км/ч на мокром — ~37 м на новых и ~64 м на лысых; ABS в 1998-м нет — при сильном нажатии колёса блокируются и машина не рулится. На снегу с 40 км/ч: 13 м / 23 м.
- Заносы только по причине: в повороте на мокром лысые задние срывают зад, газ в пол на плохих шинах — пробуксовка; на прямой без руля машину само по себе не заносит.
- Износ: пробег и скорость (≈6000 км на комплект при спокойной езде), пробуксовка, скольжение в заносе, блокировка колёс, боковые перегрузки, неправильное давление, гравий, погнутая после аварии подвеска. Сильно изношенная шина на скорости может лопнуть — машину тянет, едет на ободе.
- Давление травит со временем (изношенная — быстрее), на морозе ниже (−10°C ≈ −0,25 бар), удар о препятствие может спустить колесо. «Шины и давление» в меню машины: протектор и давление каждой шины; подкачать компрессором (заправка / магазин «Восток», 35 ₽) или бесплатно у колонки «Воздух» на заправке; стравить; манометр — 6 ₽.
- Замена по одной: снять/поставить колесо (болты или меню), новые — в магазине, б/у — на свалке и с доноров; поставленное колесо накачано до нормы.
-
Рабочие зеркала заднего вида (
mirrors.py): у каждой машины по одному зеркалу слева, справа и в салоне; у машины, в которой вы сидите, все три показывают настоящую дорогу позади (отражённо, как в жизни): в салонном — заднее стекло и машины сзади, в боковом — свой борт у края и то, что догоняет слева/справа. Свет, туман, ночь — те же, что в мире. Камеры зеркал работают только при виде из кабины (дальность 160 м, боковые обновляются через кадр — FPS почти не страдает). -
Ключи, замки и угон (
keys.py,theft.py): у каждой машины свой ключ (уникальный код). Ключ носится в руке.- Зажигание: I — вставить ключ из руки (рука тянется к замку) и, держа I, завести; ключ поворачивается в замке. E на замке зажигания — заглушить / вынуть ключ. Без своего ключа машина не заводится; можно завести напрямую (набор ключей, 4 мин) — но замок зажигания испорчен, TÜV это заметит.
- Замки: K — запереть/отпереть (снаружи — ключом в руке, изнутри — кнопкой). Щелчок замка, кнопки блокировки на дверях опускаются, у машин с центральным замком (Golf, W123, BMW, Volvo, Audi, Civic, AE86, Mustang) мигает аварийка. Запертую не открыть: ручка не поддаётся («заперто»), багажник и капот тоже; сесть через F можно, только если ключ в руке. Вскрыть монтировкой можно (G на ручке) — замок ломается. Замена замков в меню работы с машиной (комплект 45 ₽) даёт 2 новых ключа, старые перестают подходить. Запасные ключи — на ключнице у двери квартиры. Ключ, забытый в замке, — отдельная беда: так и захлопнуть можно.
- Угон: ночью (01–05) машину, оставленную не в своём гараже, могут угнать. Шанс за ночь: под окнами запертая ~1%, незапертая ~2,5%, с ключом в замке ~15%, на заброшенной парковке и в подземке — выше; Mustang уводят в разы чаще ржавого ВАЗ; зимой ночи длиннее. Если вы рядом с машиной — не полезут. Угнанная машина реально уезжает в другое место города (улица, парковка, подземка) со своим состоянием и следами угона: сломанный замок, провода вместо ключа, разбитая форточка, меньше бензина, пробег, иногда вмятины, снятые детали и пропажи из багажника. Неездящую машину не угоняют — могут раскурочить на месте.
- Полиция: участок на Хауптштрассе (восточнее магазина «Восток»). Заявление об угоне — марка, модель, цвет, номер, приметы, место. Полиция ищет — может найти за часы, а может за недели.
- Объявления: там же — объявление с вознаграждением (сумму выбираете сами): 10 листовок за 5 ₽ — развесить на досках у супермаркета, ратуши, закусочной, заправки, вокзала и полиции (E у доски), или газета «Кляйнбрукский вестник» (25 ₽, 3 дня). Жители звонят, когда увидят машину; у машины нашедший ждёт обещанное — заплатить или нет (не заплатите — объявлениям перестанут верить). Нашли — сядьте в машину, и она снова ваша.
-
Настоящие окна в квартире (
window_views.py): квартира — на втором этаже дома Линденштрассе, 7, и из всех четырёх окон виден тот же живой мир: из гостиной и кухни — улица с машинами, трафиком, пиццерией напротив; из спальни — гараж и дорога на восток; из южного окна — свой балкон и двор. Вид меняется при каждом шаге и повороте головы, как в настоящем окне (подойдите к стеклу и посмотрите вниз — видна своя машина у дома). Время суток, погода, фонари и светящиеся окна ночью, снег/дождь на стекле, лёгкий блик. Днём из окон в комнату падает свет, вечером — лампы. Устроено без копий мира: для каждой стороны дома — камера в том же мире на высоте второго этажа, рисует только когда окно в кадре и в уменьшенном разрешении (FPS не падает). -
Смена дня и ночи, дождь, туман, фонари. Трафик и зелёно-белая полиция 90-х, камеры скорости (Blitzer), часы работы магазинов по немецкому закону (в воскресенье всё закрыто).
| Файл | Что внутри |
|---|---|
main.py |
3D-игра: камера, ходьба, вождение, режимы |
state.py, actions.py |
логика: время, потребности, деньги, здания, работа, ремонт |
car.py |
физика, износ и внешний вид всех машин |
models.py |
модели брошенных машин: характеристики, кузов, детали |
world.py |
карта города (общая) |
places.py, places3d.py |
подземные гаражи, парковки, площадка Вебера: раскладка и 3D |
winter.py, winter3d.py |
снег и слякоть: логика (колеи, сцепление) и 3D |
engine.py |
двигатель по деталям: раскладки, порядок разборки, влияние на работу, осмотр, диагностика |
fasteners.py |
болты и гайки деталей, что бывает с недокрученным |
car3d_extra.py |
двери, багажник, поворотники, приборы, детали салона/кузова, болты в 3D, точки для прицела |
damage.py |
аварии: вмятины, деформация кузова, последствия, «тотал» |
streaming.py |
подгрузка мира вокруг игрока (квадраты карты по дальности) |
electrics.py |
электрика: блок предохранителей, цепи, неисправности, прозвонка, последствия (полиция, TÜV) |
storage.py |
хранилища предметов: багажник, холодильник, стеллаж в гараже |
hands3d.py |
руки игрока в 3D: предметы в руках, анимации еды и питья |
underside.py, under3d.py, under_play.py |
ремонт снизу: просвет, домкрат и подставки, детали низа и их болты, игрок под машиной |
window_views.py |
вид из окон квартиры на настоящий город (камеры по сторонам дома, стекло, блики, осадки) |
tires.py |
шины: протектор, давление, сцепление по покрытию/погоде, износ, проколы |
traffic.py, traffic3d.py |
трафик на физике, светофоры, уличные гонщики, пешеходы; их 3D с уровнями детализации |
service.py, service3d.py |
автосервис и бессрочная гарантия; здание, механики |
mirrors.py |
рабочие зеркала заднего вида (камеры назад, отражение на стекле) |
keys.py, theft.py |
ключи и замки; угон, полиция, объявления, вознаграждение |
calendar_de.py |
месяцы и климат: температура, свет, погода, снег по сезону |
tuning.py |
тюнинг: детали поверх стандартных (турбина Civic), режимы наддува |
city3d.py, car3d.py, apartment3d.py |
3D-модели города, машин и квартиры |
ui3d.py, audio3d.py, textures3d.py, mesh3d.py |
интерфейс, звук, текстуры, сборка геометрии |
main2d.py, game.py, scene_*.py, scenes_menu.py, ui.py, sound.py |
2D-версия |
i18n.py, locales/*.json |
языки: T(), переводы, смена языка на лету, проверка переводов |
Сохранение хранится в файле savegame.json рядом с игрой, выбранный язык — в settings.json.