From 24c375fd2dbeb7836ce170e0ef55f0e57f1617d0 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Mon, 24 May 2021 19:37:12 +0200 Subject: [PATCH] cursed comment time --- blog/res/tiny_life_one_year/commit.png | Bin 0 -> 23059 bytes blog/res/tiny_life_one_year/search.png | Bin 0 -> 8704 bytes blog/src/posts.json | 7 + blog/src/tiny_life_one_year.md | 182 +++++++++++++++++++++++++ 4 files changed, 189 insertions(+) create mode 100644 blog/res/tiny_life_one_year/commit.png create mode 100644 blog/res/tiny_life_one_year/search.png create mode 100644 blog/src/tiny_life_one_year.md diff --git a/blog/res/tiny_life_one_year/commit.png b/blog/res/tiny_life_one_year/commit.png new file mode 100644 index 0000000000000000000000000000000000000000..86c3bee7c3495f935b7761696aecf26c5c754adf GIT binary patch literal 23059 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

)t6o45TSie`9K@@VsdKzn_ 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 literal 0 HcmV?d00001 diff --git a/blog/res/tiny_life_one_year/search.png b/blog/res/tiny_life_one_year/search.png new file mode 100644 index 0000000000000000000000000000000000000000..de73058f4d094c4c4d550fae8deef7ed2c4d4b23 GIT binary patch literal 8704 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 Xg3+&E0z35gBtSZv4>StZp1=JcVMKZ} literal 0 HcmV?d00001 diff --git a/blog/src/posts.json b/blog/src/posts.json index d39f1a2..b43ccdf 100644 --- a/blog/src/posts.json +++ b/blog/src/posts.json @@ -180,5 +180,12 @@ "book": true, "prompt": "https://blog.reedsy.com/creative-writing-prompts/contests/90/submissions/63882/", "discuss": "https://twitter.com/Ellpeck/status/1385686796911185920" + }, + { + "name": "One Year of Tiny Life, and Cursed Comment Time", + "summary": "It's been exactly one year since I started working on my isometric Sims-style life simulation game Tiny Life, and since then, a lot has happened, especially in the realm of weird, funny and cursed comments in the code.", + "id": "tiny_life_one_year", + "cat": ["Programming", "Featured"], + "date": "5/24/2021" } ] \ No newline at end of file diff --git a/blog/src/tiny_life_one_year.md b/blog/src/tiny_life_one_year.md new file mode 100644 index 0000000..373c97f --- /dev/null +++ b/blog/src/tiny_life_one_year.md @@ -0,0 +1,182 @@ +On this day, exactly one year ago, I made my first commit to the Tiny Life repository. Since that first commit, which included some code for the isometric perspective that the game uses, Tiny Life has come *a long way*. + +![](res/tiny_life_one_year/commit.png =100%x*) + +If you don't recall just how long of a way it has come, or you don't even know about the game yet: Tiny Life is, as I wrote on its [itch page](https://ellpeck.itch.io/tiny-life): + +> Tiny Life is a fun simulation game that tries to capture the essence of games like The Sims, but in an isometric pixelart style. +> +> In the game, you control a set of people that live together in a household. You take care of their daily needs, build their skills, forge new relationships... or just mess up their entire life in whatever way you can think of! + +So, to celebrate, and because of a Twitter poll I did a while ago that made it clear that yall are interested in something like this, let's go through Tiny Life's current code and fish out some funny, cursed and weird code comments that just naturally come about when making a game that tries to simulate the personalities and behaviors of human people. + +While this blog post *does* include a lot of programming-related humor, most of the comments are still funny and a bit ridiculous out of context, so you don't have to be a programmer to laugh along by any means. + +![](res/tiny_life_one_year/search.png =100%x*) + +That should do for now. *Oh, boy.* Note that I'll just be going through them using the order they appear in these search results, so the funniest ones won't be at the start or the end, but just... somewhere in between. + +First up, this is one that most of you will probably find pretty relatable. +```cs +// we want people to clean dishes when they're hungry to make space for food +Ai = { + SolvedNeeds = new[] {NeedType.Hunger}, +} +``` + +This one is for the introverts (to whom I most certainly belong) out there. +```cs +// we only want to visit someone when we're currently at home for long enough +if (a) + return i.Person.LotVisitCooldown <= TimeSpan.Zero && i.Person.LastVisitedLot == i.Person.HomeLot ? Valid : Hidden; + +``` + +Teenagers should probably remember this one. Consent is (very unironically) important, yall! +```cs +// automatic romance interactions should only happen if we're already romantic towards each other +return relationship?.RomanceLevel > 0 ? Valid : Hidden; +``` + +Fair enough. +```cs +// eat food if we're hungry +if (person.GetNeedPercentage(NeedType.Hunger) <= 0.5F && obj.ServingSize <= 1) + return ActionType.Eat.Construct(person.GetHeldActionInfo()); +``` + +Especially in the city! Don't linger around too long, kids. +```cs +// move to the sidewalk once we're done driving +var road = this.Map.GetClosestRoad(car.Position.ToPoint(), Map.RoadRadius + 1); +``` + +You: Oh no, my car broke down! +Me: +```cs +// if the driving fails, we always want to walk to the goal in the end +return base.ShouldFail(completedAction, completion) && completedAction is not DriveAction; +``` + +Do yall also do this thing where you're like "I cleaned *a single dish*, now I can take a break"? +```cs +// should we start to take a break between actions? +if (this.OnBetweenActions(time, passedInGame, speed, current, completion)) { + this.isBetweenActions = true; + return true; +} +``` + +It might be sad to hear, but this is something *you* have to do as well. +```cs +// we want to prioritize going to work over sleeping automatically +if (this.StartedAutomatically && this.Person.Job != null && this.Person.Job.Type.IsTimeToWork(GameImpl.Instance.CurrentTime + TimeSpan.FromHours(1))) + return CompletionType.Canceled; +``` + +A bit creepy, don't you think? +```cs +// follow our partner until we reach them +if (this.IsMain) { + this.followTimer -= time.ElapsedGameTime; +``` + +Jesus Christ, mom, how many more times do you want to tell me that *same story*? +```cs +// we add the recent social to the relationship of the recipient +// so it represents an "I've heard this story already" list +relationship.AddRecentSocial(action.Type); +``` + +Also... fair enough. +```cs +// make lots more interesting if we have friends on them +lot = Random.GetRandomWeightedEntry(lots, l => l.Type.GetVisitPriority(l, this.Person)); +``` + +It really *is* based on our mood how efficiently we work. +```cs +// if we're currently working, we should increase job performance based on our mood +var performance = this.Person.Needs.Values.Count(n => n.Percentage >= 0.75F) * 0.004F; +``` + +Does this also apply to *sleepovers*? +```cs +// the bed that we last slept in should be the one we try to sleep in again +if (this.HasCategory(person, ObjectCategory.Bed) && categories.HasFlag(ObjectCategory.Bed) && this.Id == person.LastBedSleptIn) + return 10; +``` + +Fair... enough. +```cs +// pee puddles should be more disgusting +DecorativeRating = f => f.Colors[0] == 1 ? -30 : -10 +``` + +For this one, I especially like that I chose to name the variable `naked`. +```cs +// if someone isn't wearing pants and they aren't romantic with us, we should get (them) embarrassed +var naked = room.GetObjects() + .Where(p => p != this && p.GetRelationship(this, false)?.RomancePercentage < 0.25F && !p.WornLayers.HasFlag(ClothesLayer.Pants)) + .ToArray(); +``` + +This comment is, of course, in the `Person.Die` method. +```cs +// make friends sad +foreach (var rel in this.Relationships) { +``` + +You: I'm bored! +Me: +```cs +// if we don't have anything else to do, also try random actions +if (this.person.ActionQueue.Count <= 0 && this.person.CurrentActions.Count <= 0) + avail.AddRange(RandomActions); +``` + +Drunk people, anyone? +```cs +// don't do stuff that's inappropriate here +if (type.Settings.IsInappropriateElsewhere) { +``` + +Am I wrong? I say no. +```cs +// the front door is the closest door to the mailbox that connects outside and inside +var mailbox = this.GetObjects().FirstOrDefault(f => f.Type == FurnitureType.Mailbox); +``` + +Oh no, I *really* hope it isn't. +```cs +// is it just turning monday now? +var game = GameImpl.Instance; +if (game.Weekday == DayOfWeek.Sunday && (game.CurrentTime + passedInGame).Days != game.CurrentTime.Days) { +``` + +Clearly. +```cs +// if we're not loading from disk, we want to replace the floor with concrete +if (initializeRooms) { +``` + +*Am I wrong?* +```cs +// drywall should be considered ugly +if (wall.Wallpapers[side].BaseName == "Default") + rating--; +``` + +I said it once (multiple times, actually), and I'll say it again: *Am I wrong?* +```cs +// energetic people should be able to stay awake longer than others +public static readonly NeedType Energy = Register(new NeedType("Energy", 0.5F, p => ActionType.PassOut, p => p.HasPersonality(PersonalityType.Energetic) ? TimeSpan.FromHours(1) : TimeSpan.Zero, 10)); +``` + +There we go, that's most of the funny human-related comments I could find with the very simple search I did. I definitely think some of these are *very funny* out of context, but what makes it even better is that some of them are also pretty funny *in* context. Humans really do act very weirdly sometimes, don't they? + +All of that being said, thanks so much for reading this blog post. If you haven't already, you should definitely check out the game, as it is very much a passion project of mine, and I think it currently has enough content to be quite a bit of fun to play already. + +You can download the game for free (or for a price of your choosing) on its [itch page](https://ellpeck.itch.io/tiny-life). + +❤, everyone. \ No newline at end of file