GrooveypenguinX added a new file:
QuoteDisplay More
The WTT Team is proud to present our first completely custom usable item: a fully functional Nintendo Game Boy. This mod comes complete with:
- Working emulation for .gb ROMs inside an actual Game Boy model
- A custom cartridge creation system for adding more games
- Save compatibility with other emulators
- And even accessories!
This Game Boy is fully animated and can be used in the hideout! Sit back at the rest station, pop on some Tarkov TV, and take yourself back to 1995 with this blast from the past.
I've also opted to include ONE SINGULAR ROM. It is a fan-made version of Pong, a game that was never actually released on the original Game Boy so by all means it's not infringing on any copyright that I know of. (https://github.com/Boniato82/Pocket_Pong)
This project was extremely fun to work on. I learned a ton about how Tarkov handles items, animations, and controllers. Here's some of the highlights that made this project possible:
- A full-fledged Game Boy emulator, specifically designed for Unity projects (UnityGB: https://github.com/KonsomeJona/UnityGB ).
- Three new classes on the client and server for the Game Boy, the accessories, and a new template for the accessories.
- Two new controllers (item controller and client version) to handle the base Tarkov states for the item.
- A fully fleshed-out Weapon Container, based on the range finder, with new layers added to the animator controller and new parameters to control their operations.
- Custom animations, all created in Choccy's first-person rig. Every single button press, cartridge load/unload, and even the power switch is animated. The controller makes simultaneous left/right hand animations using additive layers in the animator controller.
- Tons of backend work in the client to trigger animations, handle emulator states, save game data, prevent "busy hands" bugs, and apply a ton of patches to make the custom items function like regular Tarkov items.
This project would not have been possible without the following incredibly talented individuals:
Tron - Initial Unity Prefab Creation: One of the founding members of WTT, lead asset developer, and my overall partner-in-crime when it comes to Tarkov content. Tron and I met by chance in the SPT Discord, and once we teamed up, our passion for learning has never stopped. With well over 1,300 custom items in WTT alone, Tron has been the driving force behind the creation of custom weapons, wearables, usables—pretty much anything you can imagine. You know him, you love him, and I’m proud to call him my good buddy. ❤️
EpicRangeTime - Sourcing and purchasing the Game Boy model: (https://www.cgtrader.com/3d-mo…ntendo-gameboy-retro-1989) 😎
Krackasaurus - 3D Modeling, Texture Design, and Art Design: Krack personally crafted the worm light from scratch in Blender and helped create teasers for the Game Boy.
Rexana - Texture work: Helped on the textures of the Game Boy, base cartridge, and worm lights.
SSH - SDK Guru: None of this would have been possible without the groundwork SSH and SamSWAT laid with the SDK, as well as the personal help they've both been along the way.
Choccster - Animation Support: Provided his first-person rig and put up with my questions while I navigated creating animations from scratch using it.
Cj - Client Wizard: A constant source of knowledge on the Tarkov client, and always willing to help me learn along the way.
ME - I uh, spent way more time on this project than I'd like to admit lol. Once it became a feasible thing that could actually happen, I went hard and learned how to create custom animations from scratch, new types in the client/server, new controllers, new usable items, all complete with logic to load/unload them from the item as well as sync everything to work within tarkov's fickle animation states lol. It was a super fun project, and I'm glad I took the time to make it what it is today. This is the Team and I's first custom usable item, but it surely isn't going to be the last
I hope you all enjoy this trip down memory lane, packed with as much nostalgia as I could possibly induce
Like my work? Buy me a coffee!
https://ko-fi.com/grooveypenguinx
------------------------------------------------------------------------------------------------------------------
The Game Boy is available from:
- Mechanic:
- Barters at level 1, Sells at level 2.
- Peacekeeper:
- Sells at level 1 (but the price is steep...).
The Cartridges are available from:
- Mechanic:
- Sells Tetris & Pong at level 1, barters for all other cartridges at level 2 and 3.
- Peacekeeper:
- Sells Link's Awakening at level 1 (he's lowkey a Zelda superfan).
The Worm Lights are available from:
- Mechanic:
- Sells the yellow light at level 1
- Sells the purple light at level 2
- Sells the Lisa Frank edition at level 3.
Additional Availability
- All items have a chance to spawn in a few containers on every map. Best of luck!
------------------------------------------------------------------------------------------------------------------
This mod DOES NOT COME WITH ANY ROMS OUTSIDE OF ONE FAN-MADE PONG ROM.
That being said, this mod does allow you to create your own custom cartridges for the Game Boy. Each cartridge is defined through a.json
file, and this guide will walk you through the process of setting up your cartridges, adding game ROMs, customizing cartridge appearance, and adjusting trader and loot availability.Getting Started: File Setup
Before you begin adding a new cartridge, make sure that your ROM and cartridge image files are placed in the correct directories:
- ROM Files: Add
.gb
files to the following directory:BepInEx/plugins/GameBoyEmulator/roms
- Cartridge Images: Add image files (such as
.png
) that will be displayed on the cartridge's label here:BepInEx/plugins/GameBoyEmulator/CartridgeImages
Step-by-Step Guide: Creating a Cartridge
1. Create or Update a
.json
File
- Go to the
db/cartridges
folder, located inside this mod's server folder (WTT - Komrade Kid by Nyetendo)- You can either create a new
.json
file, or update the eicustom_cartridges.json
to include your new cartridge.2. Define the Cartridge
Each cartridge must have a unique entry in the
.json
file. Here’s a breakdown of the properties you’ll need to define:Basic Information
- ID: Change the ID to a new MongoId to ensure uniqueness. You can generate a MongoId using a tool like this MongoDB Objectid generator.
- RomName: The name of the
.gb
file in theroms
directory, for example:
- CartridgeImage: The image file that will be used as the label for the cartridge. Ensure that this matches the file name of the image in the
CartridgeImages
directory:
- PrefabPath: This defines the 3D model that the cartridge uses. Update it to match the path of your desired cartridge color or style:
- Included in this mod are the following cartridge color bundles:
- gb_cartridge_blue. bundle
- gb_cartridge_gray. bundle
- gb_cartridge_red. bundle
- gb_cartridge_yellow. bundle
- gb_cartridge_purple. bundle
- gb_cartridge_transparent.bundle
- In this case, we will use the gray cartridge .bundle for tetris:
Localization
- Customize how the cartridge appears in-game by modifying the
locales
section:JSON"locales": { "en": { "name": "Tetris", "shortName": "Tetris", "description": "Tetris is a puzzle video game created in 1985 by Alexey Pajitnov, a Soviet software engineer." } }
- name: The full name of the cartridge.
- shortName: A shorter version, for use in tight UI spaces.
- description: A brief description that gives context to the game.
3. Set Pricing
Cartridges can be configured to have different prices in both the Flea Market and the in-game Handbook:
- fleaPriceRoubles: This sets the price of the cartridge if it is sold on the Flea Market.
- handbookPriceRoubles: This determines the base value of the cartridge in the in-game Handbook:
Adjust these values to reflect the worth of the game you’re adding.
4. Add to Traders and Loot Containers (Optional)
You can add the cartridge to in-game traders or static loot containers to make it obtainable through gameplay:
- Add to Traders: Configure the
traders
section to specify which traders can sell the cartridge, at what loyalty level, and for what price:JSONDisplay More"addtoTraders": true, "traders": { "MECHANIC": { "6710230f8fc2d4c53d3bb225_settings": { "loyalLevel": "1", "unlimitedCount": false, "stackObjectsCount": 7 }, "6710230f8fc2d4c53d3bb225": [ { "count": 34420, "_tpl": "MONEY_RUB" } ] } }
- Set
addtoTraders
totrue
to enable trader availability.- Define trader specifics like the trader (id or the name from src/resources/configconsts.json),
loyalLevel
(the level of loyalty required) andstackObjectsCount
(the quantity available), and the barter itself requires count (the number of this item required for the trade), and _tpl (you can use the id of the item, or name of the item found in src/resources/items.json)- Make sure you generate new MongoId's for each new barter scheme you add. Multiple schemes with the same Id will break the trader. You can generate a MongoId using a tool like this MongoDB Objectid generator.
- Add to Static Loot Containers: Specify the loot containers where the cartridge might spawn and set the probability:
JSONDisplay More"addtoStaticLootContainers": true, "StaticLootContainers": [ { "ContainerName": ["LOOTCONTAINER_DEAD_SCAV"], "Probability": 500 }, { "ContainerName": ["LOOTCONTAINER_DUFFLE_BAG"], "Probability": 500 } ]
- Set
addtoStaticLootContainers
totrue
to enable this.- Adjust
ContainerName
to target specific loot containers likeLOOTCONTAINER_SAFE
orLOOTCONTAINER_JACKET. You can use the id of the container, or the name from the item map found in src/resources/items.json
- Use
Probability
to control how likely the cartridge is to appear.5. Save and Test
Once you’ve defined all the necessary fields, save your
.json
file. Launch the game to ensure that the cartridge appears correctly and functions as expected. You should see the new cartridge available with the specified traders, or found in loot containers.Example JSON Structure
Here’s a full example of a cartridge setup:
JSONDisplay More"670fff8360114b8efbdeb9dc": { "RomName": "tetris.gb", "CartridgeImage": "tetris.png", "Prefabpath": "cartridges/gb_cartridge_gray.bundle", "locales": { "en": { "name": "Tetris", "shortName": "Tetris", "description": "Tetris is a puzzle video game created in 1985 by Alexey Pajitnov, a Soviet software engineer." } }, "fleaPriceRoubles": 28420, "handbookPriceRoubles": 22420, "addtoModSlots": true, "modSlot": "cartridge", "addtoTraders": true, "traders": { "MECHANIC": { "6710230f8fc2d4c53d3bb225_settings": { "loyalLevel": "1", "unlimitedCount": false, "stackObjectsCount": 7 }, "6710230f8fc2d4c53d3bb225": [ { "count": 34420, "_tpl": "MONEY_RUB" } ] } }, "addtoStaticLootContainers": true, "StaticLootContainers": [ { "ContainerName": ["LOOTCONTAINER_SAFE"], "Probability": 500 } ] }
Final Notes
Once your cartridge is set up, you can further tweak the settings as needed, such as adjusting loot probabilities or adding new languages to the
locales
section. Enjoy expanding the library of games available for your in-game Game Boy!
This mod has a bepinex menu (F12 by default) that lets you set the keybinds to your preferred keys!
NOTE: If you change keybinds while using the Game Boy, make sure to set the keybinds with the "Update Keybindings" button to apply them.
- Adjust animations for third person (aim and inspect are kinda wonky looking in freecam/third person lol)
- Animating the install/uninstall for accessory attachments
- Handling the power button actually toggling between on/off (right now, it just flips and returns to the off position lol)
- Contrast and volume knobs
- Quest(s)?
- More cartridges?
- More accessories?
- A version of the fake ad I made, the Komrade Kid, that's roughly the size of a small refrigerator
What is Welcome To Tarkov?
Welcome To Tarkov (WTT) is a mod for SPT AKI that has been in development for over a year. What started as a small passion project has grown in size to incorporate 10+ core members as well as contributions from other well-known mod authors and friends of WTT alike.
How does Welcome To Tarkov change the game?
As a mod, WTT overhauls SPT AKI, touching on almost every vanilla game system, as well as adding completely new systems to the game and its core mechanics. Inspired by open-world hardcore survival projects like STALKER: Anomaly and STALKER: GAMMA, WTT takes SPT’s artificial multiplayer MMO difficulty adders and replaces them with a challenging world economy, loot scarcity rebalancing, a lore friendly quest overhaul, and a map-traveling system built from rewritten portions of the Traveler mod allowing seamless travel between maps. Aside from its changes to the game’s core properties, WTT also adds to the world’s variety of traders, NPC’s, characters, items, and quests:
- Over 500 custom bundles adding new weapons, attachments, wearables, containers, food, medical, and barter items.
- New bosses with their own custom gear that will be properly incorporated into WTT’s quest lines.
- New, meaningful traders with their own lore-friendly quests and narrative elements to help the player progress through the story-line of WTT.
- New playable characters and outfits that will add to the player’s customization abilities.
- New quest types incorporating brand new map extraction points, putting the player’s knowledge and familiarization of SPT’s maps to the test.
Welcome To Tarkov stands as one of the largest mods created for SPT AKI thus far.
When does Welcome To Tarkov release?
Thursday.
Which Thursday?
TBD
Want to follow our progress?
You can follow the project through it's development in our discord here: