Donut the Vikingchap
Sweden
 
 
I play games and make stuff. Here's some stuff:
* Gravelpit in a nutshell (GMod video, 2010)
* DeGroot Keep in a nutshell (GMod video, 2011)
* ctf_infiltration (TF2 map, 2013)
* pl_invasion [tf2maps.net] (TF2 map, 2014)
* cp_beachassault [tf2maps.net] (TF2 map, 2015)
* Maniac's Maschinenpistole (TF2 workshop item, 2015)
* Spy's Rifle [gamebanana.com] (TF2 weapon skin, 2015)
* The Hellfire (TF2 workshop item, 2015)
* pl_donut_72 [tf2maps.net] (TF2 map, 2016)
* Snowycoast in a nutshell (GMod video, 2016)
* ASCII Fortress 2 [tf2maps.net] (TF2 demake in ASCII graphics, 2017)
* libdonut [github.com] (C++ application framework, 2022)
* Dounatsu Geemu [donutvikingchap.itch.io] (Puzzle game, 2023)

Links
YouTube channel: http://www.youtube.com/user/SonicFan535
TF2Maps profile: https://tf2maps.net/members/donutvikingchap.15766/
GameBanana profile: https://gamebanana.com/members/1432477
GitHub profile: https://github.com/DonutVikingChap
MyAnimeList profile: https://myanimelist.net/profile/DonutViking
Trade offer: https://steamcommunity.com/tradeoffer/new/?partner=37989922&token=vnZA5I2L

PC Specs
CPU: AMD Ryzen 7 5800X
Graphics card: PowerColor Radeon RX 6800 XT Red Devil
RAM: Kingston Fury Renegade DDR4 32 GB 3600 MHz CL 16
Motherboard: ASUS ROG Strix B550-F Gaming
PSU: ASUS ROG Strix 850 W
SSD: Samsung 970 EVO Plus 1 TB
Sound Card: ASUS Xonar Essence STX
Case: Fractal Design Meshify 2 Light Tempered Glass Black
Cooler: Noctua NH-D15S Chromax Black

OS: EndeavourOS

Monitor 1: ASUS ROG Swift PG258Q
Monitor 2: EIZO Foris FS2331
Monitor 3: Dell U2412M

Keyboard: Varmilo VA88M MX Blue
Mouse: Glorious Model D
Mousepad: Steelseries QcK Heavy XXL
Headphones: Audio Technica ATH-R70x
Microphone: Elgato Wave:1
Controller 1: Steam Controller
Controller 2: Dualshock 4
VR HMD: Valve Index
Currently Online
Video Showcase
Snowycoast in a nutshell
2 1
Information
class DonutTheVikingchap final : public SteamUser {
public:
. . [[nodiscard]] auto aliases() const -> std::vector<std::string_view> override {
. . . . return {
. . . . . . "Donut the Vikingchap", // Steam.
. . . . . . "DonutVikingChap", // Twitch, Origin, etc.
. . . . . . "DonutViking", // Blizzard, etc.
. . . . . . "dOnUt55", // Minecraft.
. . . . . . "T1S | dOnUt!? (SWE)", // Steam (circa 2010).
. . . . . . "SonicFan535", // YouTube.
. . . . };
. . }
. .
. . [[nodiscard]] auto links() const -> std::vector<std::string_view> override {
. . . . return {
. . . . . . // YouTube channel.
. . . . . . " http://www.youtube.com/user/SonicFan535 ",
. . . . . . // TF2Maps profile.
. . . . . . " https://tf2maps.net/members/donutvikingchap.15766/ ",
. . . . . . // GitHub profile.
. . . . . . " https://github.com/DonutVikingChap ",
. . . . . . // MyAnimeList profile.
. . . . . . " https://myanimelist.net/profile/DonutViking ",
. . . . . . // Trade offer.
. . . . . . " https://steamcommunity.com/tradeoffer/new/?partner=37989922&token=vnZA5I2L ",
. . . . };
. . }
. .
. . [[nodiscard]] auto specs() const -> PCSpecs override {
. . . . return {
. . . . . . .cpu = {
. . . . . . . . .name = "AMD Ryzen 7 5800X",
. . . . . . . . .cores = 8,
. . . . . . . . .threads = 16,
. . . . . . . . .frequency = 3800_MHz,
. . . . . . . . .turbo_frequency = 4700_MHz,
. . . . . . . . .cache = 36_MB,
. . . . . . },
. . . . . .
. . . . . . .cpu_cooler = {
. . . . . . . . .name = "Noctua NH-D15S Chromax",
. . . . . . . . .color = "Black",
. . . . . . },
. . . . . .
. . . . . . .graphics = {
. . . . . . . . .name = "PowerColor Radeon RX 6800 XT Red Devil",
. . . . . . . . .frequency = 1825_MHz,
. . . . . . . . .boost_frequency = 2340_MHz,
. . . . . . . . .memory = {
. . . . . . . . . . .type = "GDDR6",
. . . . . . . . . . .capacity = 16_GB,
. . . . . . . . . . .frequency = 16000_MHz,
. . . . . . . . . . .bus_width = 256_bits,
. . . . . . . . }
. . . . . . },
. . . . . .
. . . . . . .memory = {
. . . . . . . . .name = "Kingston Fury Renegade",
. . . . . . . . .type = "DDR4",
. . . . . . . . .capacity = 32_GB,
. . . . . . . . .frequency = 3600_MHz,
. . . . . . . . .cas_latency = 16,
. . . . . . },
. . . . . .
. . . . . . .motherboard = {
. . . . . . . . .name = "ASUS ROG Strix B550-F Gaming",
. . . . . . . . .form_factor = "ATX",
. . . . . . },
. . . . . .
. . . . . . .power_supply = {
. . . . . . . . .name = "ASUS ROG Strix",
. . . . . . . . .cert = "80 PLUS Gold",
. . . . . . . . .power = 850_W,
. . . . . . },
. . . . . .
. . . . . . .storage = {
. . . . . . . . { .name = "Samsung 970 EVO Plus", .capacity = 1_TB },
. . . . . . },
. . . . . .
. . . . . . .audio = {
. . . . . . . . .name = "ASUS Xonar Essence STX",
. . . . . . },
. . . . . .
. . . . . . .case = {
. . . . . . . . .name = "Fractal Design Meshify 2",
. . . . . . . . .type = "Light Tempered Glass",
. . . . . . . . .color = "Black",
. . . . . . },
. . . . };
. . }
. .
. . [[nodiscard]] auto operating_systems() const -> std::vector<std::string_view> override {
. . . . return {
. . . . . . "EndeavourOS",
. . . . };
. . }
. .
. . [[nodiscard]] auto peripherals() const -> PCPeripherals override {
. . . . return {
. . . . . . .monitors = {
. . . . . . . . { .name = "ASUS ROG Swift PG258Q", .panel_type = "TN", .refresh_rate = 240_Hz },
. . . . . . . . { .name = "EIZO Foris FS2331", .panel_type = "VA", .refresh_rate = 60_Hz },
. . . . . . . . { .name = "Dell U2412M", .panel_type = "IPS", .refresh_rate = 60_Hz },
. . . . . . },
. . . . . .
. . . . . . .keyboard = "Varmilo VA88M MX Blue",
. . . . . . .mouse = "Glorious Model D",
. . . . . . .mouse_pad = "Steelseries QcK Heavy XXL",
. . . . . . .headphones = "Audio Technica ATH-R70x",
. . . . . . .microphone = "Elgato Wave:1",
. . . . . . .controllers = {
. . . . . . . . "Steam Controller",
. . . . . . . . "Dualshock 4",
. . . . . . },
. . . . . .
. . . . . . .vr_hmd = "Valve Index",
. . . . };
. . }
. .
. . [[nodiscard]] auto important_info() const -> std::string_view {
. . . . rng.seed(52581527);
. . . . std::ranges::generate(text, [this] { return chars[rng() % size(chars)]; });
. . . . return {data(text), size(text)};
. . }
. .
. . auto update(std::chrono::steady_clock::duration delta_time) -> void override {
. . . . time_since_coffee += delta_time;
. . . . motivation = std::max(motivation - delta_time, std::chrono::steady_clock::duration::zero());
. . . . if (is_awake()) {
. . . . . . while (time_since_coffee >= coffee_interval) {
. . . . . . . . drink_coffee();
. . . . . . . . motivation += coffee_motivation;
. . . . . . . . time_since_coffee -= coffee_interval;
. . . . . . }
. . . . . .
. . . . . . if (motivation == std::chrono::steady_clock::duration::zero()) {
. . . . . . . . play_games(delta_time);
. . . . . . } else {
. . . . . . . . make_stuff(delta_time);
. . . . . . }
. . . . . .
. . . . . . check_inbox();
. . . . }
. . }
. .
private:
. . [[nodiscard]] auto has_comment_from(std::string_view username) const noexcept -> bool {
. . . . return std::ranges::any_of(inbox().comments(), [username](const auto& comment) {
. . . . . . return comment.sender().username() == username;
. . . . });
. . }
. .
. . auto check_inbox() -> void {
. . . . for (auto& invite : inbox().friend_invites()) {
. . . . . . if (has_comment_from(invite.sender().username()) && !invite.is_random() && rng() % 2) {
. . . . . . . . invite.accept();
. . . . . . }
. . . . }
. . . . inbox().clear();
. . }
. .
. . static constexpr auto coffee_interval = std::chrono::hours{6};
. . static constexpr auto coffee_motivation = std::chrono::hours{1};
. . static constexpr auto chars = std::string_view{
. . . . "uboe$%s'rnk'yl.c e23e5sb8b:;c= eoABtDnsGHItlLMe " " " " "
. . . . "RYTfVn !Z[y]^ e bcddfgohjkemaalqmutucmo z{|}~"
. . };
. .
. . std::chrono::steady_clock::duration time_since_coffee{};
. . std::chrono::steady_clock::duration motivation{};
. . mutable std::mt19937 rng{};
. . mutable std::array<char, 52> text;
};
Recent Activity
589 hrs on record
last played on 6 Oct
215 hrs on record
last played on 3 Oct
46 hrs on record
last played on 30 Sep
Revelatiombe 9 Jul @ 3:09pm 
+rep
The legend himself, SonicFan535! :D:
Donut the Vikingchap 20 Apr @ 6:21am 
I'm glad you liked them :) The main reason I haven't made a video in so long is just that I've been busy with other stuff (5 years of university, and now game development). I hope I'll find the time to make another video someday, but for now I have some slightly more ambitious projects going on, so we'll see how it pans out!
Maxrhov 19 Apr @ 3:59pm 
i just realized that i was playing Kong King with a guy that made Snowycoast and Gravelpit nutshells gmod videos, just want to say thanks for making those videos there were a part of my childhood. i was also wondering did you stop making youtube videos because you last video was from 7 years ago. anyways keep it up and have a good day/night
affixated 28 Mar @ 9:07am 
thats okay :) thanks alot for responding. i may try to see about looking at some of crash's tutorials at some point, and if i make a vscript gamemode i might try making ultrakill lol
Donut the Vikingchap 28 Mar @ 7:28am 
I can't do that for free, sorry. If you want to learn how to make maps, I'd recommend checking out the TF2Maps community, especially the tutorials by UEAKCrash. If you want to make models like weapons and hats, then I'd suggest to start off by learning Blender, which is a free modeling tool. There are many great tutorials out there; I personally started out following the ones for TF2 by HellJumper. They're kinda outdated now, but they might be a good starting point for finding similar ones, or just seeing the general steps involved. For other kinds of mods, it really depends on what you want to do, but a good way to start is to just try to figure out how your favorite ones were made, and try follow the same path. For example, if you want to make a custom TF2 gamemode you'll probably want to learn about either SourceMod or VScript, and I'm sure there are great tutorials for those out there as well.
affixated 26 Mar @ 6:33pm 
i cant pay you. but could you make a cool tf2mod? ive had it in mind for a long time, i just dont know how to make it myself, or where to get started really