#my pixel is nicer than that pixel
Explore tagged Tumblr posts
ellraiser · 2 months ago
Text
Tumblr media Tumblr media
some flooring & carpets!
11 notes · View notes
aquilamage · 1 year ago
Text
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
[Image Description: a set of five edited bug fables screenshots from the pre-battle zommoth encounter. The first is the same as in-game, Kabbu saying "W-What is that!? Something's coming!" The second is of zommoth appearing on screen with its sprite edited to be various shades of pink and yellow, wings the same pattern as Leif's (but still with the purple blight magic stuff in the chest area.) The next three images have the sprite edited in the same way.. The third image is of Leif's saying "...Wh, Rkejrm-m-Muse!? Kjdrira, mebsrgr...!!!" The next is Kabbu saying "Muse!? Leif, that's..." The final is Vi saying "T-That doesn't make any sense!" End ID]
I thought about one of my fucked up and evil au ideas for five minutes again, so I decided to spend like fifty hours making a thing about it. Basically what if Muse went back into Snakemouth later to try to rescue Leif or at least bring back his body and got caught by the roaches.
Putting just the edited sprites under the cut if you wanna see those without the lab mood lighting:
Tumblr media Tumblr media
37 notes · View notes
henpeckedho · 1 year ago
Text
Boring life update:
After looking at all the options in the budget phone range, I'm just going with the newest version of the phone I have.
While a "nicer" phone would be good, the reviews from other long time moto g fans say the same thing--2023 is a huge improvement over the other ones in this line but you can still drop your phone with abandon and have it be okay.
My phone requirements are: basic internet and the ability to drop my phone an average of 3 times a day for 3 straight years and still have it function. I AM the intended original Nokia user. And moto g delivers on that kind of durability. So, basic budget phone it is!
1 note · View note
Note
routine vibe check: what’s the best starter pokemon and why are you right (pictures and long paragraphs of evidence welcomed and appreciated)
Gonna get a good grade in vibe check, normal to want and inevitable to achieve because I have objectively correct Pokemon opinions and will block naysayers
OKAY LET'S GO
I decided to do, like, a top 5 list or something, because I'm bad at picking a single favourite of stuff. And then even that overwhelmed me, so I found one of those tier ranking list sites and produced this:
Tumblr media
It was done in less than a minute, so if I wanted to get really picky, I don't know if I would be fully wedded to it (not sure if maybe Sceptile should be one higher) BUT it did help to highlight the important ones.
So!
5. Bulbasaur
It's. Just. So. Nice.
Like you can find cooler, more beautiful, cuter, fancier... there's a whole bunch of ways for a Pokemon to be great. But you will never ever find a nicer Pokemon than Bulbasaur. It's so lovely. Look at it. Look at its face.
Tumblr media
I can't put it higher, because the rest of the line is fairly bland in terms of development. It's good and logical and fun, don't get me wrong, but Ivysaur and Venusaur just look like bigger versions with More Flower and Less Cute rather than creatures in their own right. To be honest, if it weren't a starter requiring a three-stage evolution, you could do away with Ivysaur. Something I don't like about a lot of lazy three-step lines is that the middle step just looks like a transitional mid phase rather than a Proper Creacher, like they were artificially inflating the Pokemon number count. Meanwhile it took us until Paldea to get a Girafarig evo that would actually make the giraffe tall. Madness.
However my first ever Pokemon was a Bulbasaur I called Daffodil, and I have traded him forward onto every single successive generation since. He is, quite literally, my First Ever Pokemon. I love him desperately. I still have him. Not many people still have their First Ever Pokemon. But I do and I love him. So, Bulbasaur gets the fifth spot.
4. Snivy
Again, a victim of the Banal Transitional Middle Evo, but both Snivy and Serperior are incredible, and as Meatloaf took such pains to tell us, two out of three ain't bad.
Tumblr media
But Snivy! It's so snooty! I was super lucky with mine, too, because I beat the 12.8% odds and got a female, and I loved her. Normally the initial baby starters are designed to be cute but Snivy has SO MUCH PERSONALITY, she's great. And the design of Serperior is utterly gorgeous. She keeps the expression, but rather than the Animal Crossing-style snooty-cute vibe of Snivy you get this thousand yard withering stare of an empress whose servant (you) has just turned up dripping mud in her throne room and asked her for money. Her green and gold colour scheme is exquisite. Her filigree design, including her high collar, give off the air of wealth and sophistication befitting her immaculate pedigree. And all this! In a simple snake. Incredible design work, 10 out of 10, no notes.
Tumblr media
Begone, you miserable peasant. Have him boiled.
3. Torchic
Now I'll be real with you, lads, but Pokemon design hit its stride with Hoenn and then got better.
It's partly a fashion thing, of course - you look at some of the Kanto designs and they are remarkably 90s, because that's when the franchise launched. Others are clearly a product of what the 1990's were capable of producing in pixels on an already over-stretched cartridge medium. Like we like to clown on Red and Green/Blue now, but my god, those game designers performed a miracle with Pokemon. Every single square inch of space was used to make that game, and complex designs weren't going to cut it.
(With that said, there is still no excuse for Dragonite.)
And then Johto came about and its Pokedex sucks ass. It's mostly new evolutions for existing Kanto stars, useless babies to inflate the dex number, or poorly thought out single-evos like the inexplicably short Girafarig and the unacceptably dreary Dunsparce (our greatest thanks to Paldea for fixing both of those).
BUT THEN CAME HOENN (trumpets intensify)
And we get habitats! Biomes! A different regional climate, gifting us a brand new area of Pokecology! And therefore a brand new flush of creativity in Pokemon design across the board; less dated, and more inclined to be unique rather than a rehash of Kantonian stuff.
Which brings me nicely to this lad:
Tumblr media
Now, I mean. Just look at him. Fucking hell. Cute starter stage, check. LOOK AT HIM FACE
AND THEN he became, at the time, a brand-new unique typing: Fire/Fighting. I realise that is now the norm for like, half of the Fire starters, but that's because of Torchic, actually. He was super popular. In fact if you ever play Ruby/Sapphire/Emerald and you do what my husband and I like to call a Mynci Dave run (use one Pokemon almost exclusively, meaning it gets all the experience points and therefore over-levels to a terrifying degree, allowing you to sweep the game; so named after the noble Primeape we first did this with, Mynci Dave), Torchic is the PERFECT Pokemon to choose, because almost everything is weak to either Fire or Fighting in that region.
Anyway, Combusken is, again, kind of mid (although props for the inverted colour scheme and the fact that it actually does look like a teenager.) But Blaziken, on the other hand... Blaziken is a six foot ninja chicken with wings for hair whose Pokedex entry describes it as able to leap tall peaks in a single bound, a feat it achieves after strengthening its legs by hoofing Geodudes down mountains like they're fucking footballs
Tumblr media
Also an impressive bulge.
My first was called Gilgamesh, and he was fucking great. For a long time, this mad lad was my actual favourite Pokemon, not just starter. Brilliant. Love him. Five stars out of three. King.
2. Fuecoco
It would probably surprise you to know I've not actually used one. I chose Sprigatito, and I do really like Meowscarada, actually. But pretty anthro cat boys have been done in Pokemon quite a bit at this point; cats, dogs and rabbits are over-represented in terms of Poke-taxa. Possibly this is another reason for a toad, a snake and a chicken being 5, 4 and 3 so far (ooh, basilisk ingredients, I've just realised.) They're new and unusual! I like an Eeveelution as much as the next person, but they're a whole family of cat-dog-rabbits, like.
However.
Nintendo has tried its hand at Pokecrocodilians three times (Feraligatr, Krookodile, Skeledirge), and they have gotten so much better at design each time that the three of them are basically a scale proxy for ongoing design improvement. Look, I've made a diagram:
Tumblr media
EXCEPT
(Strap in)
This one is that rare thing: a three step line that deserves to be a three step line. Let's talk Fuecoco first:
Tumblr media
SO CUTE. It's charming, it's charismatic, it's adorable.
It also has hints of its evolutionary end goal, but not like an undeveloped middle evo. It likes singing. The white face hints at the eventual calavera, and it looks a bit like a lil chilli pepper - a ghost pepper, probably in reference to the eventual Fire/Ghost typing. But the colours and shape right now also look a bit reminiscent of a babygro, because this thing is a cute starter. Lookit them teefs. That tuft. Its lovely smile. Beautiful.
And then, at the point you expect it to turn into just the awkward teenage version of the adult, instead we get Crocator:
Tumblr media
Oh boy. Oh there's so much to say. Okay okay:
The region it's from is based on Spain, but this thing is incorporating Hispanic elements from across the board. It's a mariachi in a sombrero, except the sombrero also looks kind of like a ring of Mexican marigolds and kind of like a Catalonian Easter cake called Mona de Pascua that has an egg (or egg-shaped confectionary) in the middle. Body shape and markings look kind of like a piñata. The white face is now on its way to a calavera, with the cheek and nostril markings more defined. And it sings, with its open mouth (also how crocodiles release heat, appropriate for a Fire type) and signified by the mariachi theme.
THAT IS A LOT.
And then it becomes Skeledirge. A Fire/Ghost crocodile.
Now the obvious design here is the calavera and the  Día de Muertos theming, which is part of it. But there are also many examples of crocodile figures in Spanish folkloric ghost stories: the Catalonian Cocollona, the Lizard of Magdalena from Jaén, or the Drac de Na Coca, or even the Cuca - that one is Portuguese, but turns up in both Brasil and the Iberian Peninsula including in parts of Spain. It's got a Gaudi vibe (like Barcelona). It's got an alebrije vibe (like Mexico).
And the bird! Nile crocs have a cleaning symbiosis with Egyptian plovers; it also sits at the tip of the snout where male gharials have a sort of bulbous bit to help them make sounds (the singing thing).
But this is what the bird does when Skeledirge uses Torch Song:
youtube
It becomes a microphone, then grows in size and attacks the opponent in Phoenix form. Phoenix: Fire/Ghost. Resurrected from the ashes.
Quite simply, your fave could never.
5. Rowlet
My god. (My god)
Tumblr media
gasp
Look at this lovely creacher. He is so round and so soft and so lovely. He looks like that baby Yoda meme. He looks like that cat that someone's landlord said they would make an exception for because he looks very polite. Look!!! At his lil bow tie!!! He is a smartly dressed young man and he is kind and he is... well, a bit vacant behind the eyes. A himbo, if you will. But he is all the better for that. What a lovely owl.
He looks a little like a barn owl, perhaps, and those were imported to Hawai'i, where Rowlet is from. But I think he looks a little like a Pueo owl, and given that he will eventually be a Ghost type, that seems right - pueos are one of the physical forms assumed by ʻaumākua in Hawai'ian culture, as I understand it.
And then, hang onto your tits, lads, because this is another banger - THE MIDDLE EVOLUTION IS ITS OWN DESIGN!!! (confetti cannons)
I said earlier that boring middle evos are like just awkward teenagers of the adults. Here, I present to you, a very deliberate Awkward Teenager, in Dartrix:
Tumblr media
IT'S A DANDY
I love him I love him I love him
He plays with his fringe and if you touch it without permission he has a tantrum. God, he's so charismatic. Also, that fringe further suggests the pueo - they have pronounced outer rims around their facial disks like that. Look at his bow tie and tail coat. So smart and handsome
This one is so good that it could be the final evo. This is actually my issue with the Delphox line - Braixen is amazing, and then it becomes the bland boredom of Delphox. Braixen should have been the final stop. Here, Dartrix is much the same - good enough to be a high-quality end goal.
Where they differ is that Decidueye is better again.
Tumblr media
IT SHOOTS ARROWS MADE OF ITS OWN QUILLS
Also, fun fact - This line is the only starter to change secondary typing. Dartrix is part Flying; but on evolving a second time into Decidueye, it switches to Grass/Ghost. In this evolution, it's definitely mostly a pueo, so the ʻaumākua reference is IN, but actually barn owls also have their associations with the dead in various cultures.
The crown of feathers around its head are also reminiscent of an ayaigasa - a hat worn by Japanese samurai archers. And yet! AND YET!
It still has its lil bow tie look. Bigger now, more of a cravat; but there it is.
A perfect Pokemon, and a perfect evolutionary line. No notes.
Anyway, thank you for this chance to waste three and a half hours writing this essay
264 notes · View notes
anachronismstellar · 2 months ago
Text
OK OK OK I NEED TO SLEEP BUT
in celebration of @notsofrozt teasing art
(omg omg check this out ITS SO GOOL),
AND this fic reaching 35 pages (someone save me) here's more Airplane vs The System!
Let the games begin >:)
---
There was only one thing Shen Yuan hated more than being considered stupid and it was actually acting stupid.
Because why, WHY haven't they checked the bane of their existence, the persona non grata of binary code, the absolute most devilish collection of pixels and fuckery, aka the System?
It was right there, the notification blinking in green, marking it as a mission in progress.
He clicked, actually expecting more trouble on top of the Mobei business, only to be presented with-
Mission in progress: Author's favorite.
UV002 objective: aid UV001
Mission progress: 47%
What. The fuck.
He hadn't accepted any new missions, there wasn't even an obnoxious notification! And what's up with his objective?! Aid UV001?! How?! It didn't give him any other hint of what to do!
Oh he wasn't just angry, he was furious.
To the point that he had almost torn the door off its track when he opened it, the noise loud enough to startle Shang Qinghua into throwing his brush at him.
As if that would help against a real attack.
“Have you seen the new mission?!” He snapped as he entered Shang Qinghua's improvised office, glaring at the other trasmigrator.
“W-What?” Shang Qinghua blinked like a deer in the headlights, eyes puffed red as if had been crying moments ago.
Shan Yuan swallowed his pity, hardening his heart to focus on the task at hand. He closed the door to buy himself time before approaching the desk covered in parchment, slowly putting both hands on top of it to get closer to Airplane.
“Have you seen,” he pitched his voice low so they wouldn't be heard, doing his utmost to convey his fury through whispering. “The new. Mission.”
“Uh,” Airplane blinked again, scrubbing tears away, looking as lost as a puppy dropped from the moving truck. “Cucumber-bro-”
“Don't! You Cucumber-bro me,” he held himself back, closing his eyes to not lose his temper. “We're going to talk about your murderous ways later. Right now I need you to shut up and check. Your. System.”
He could see Airplane about to ask why, but his expression might have been terrifying enough because he just nodded and opened up his system, immediately frowning.
“What the fuck?”
“What? What is it?” Shen Yuan moved to get next to Airplane to better read what he was seeing. It never failed to amuse him how different their systems were: his looked like a proper video game menu, while Airplane's just looked like a lazy programmed blog.
“There's stuff missing. And I can't click on any missions. Like, I could at least check my old stuff? But now it's all gray?!”
“What do you mean?” At this point he was almost putting his face next to Airplane's so he could see, the bland white screen making his eyes burn. “Urgh how can you stand this, can't you change to dark mode? And go check for new missions.”
“As if, your system is way nicer than mine. Wait, do you have a new mission?”
“Yeah, it's called Author's Favorite. But it says nothing, just to help UV001. It's your user, right?”
-------
See you guys in the next update!
119 notes · View notes
fruitzapple · 4 months ago
Note
For your 3D art:
What are your influences?
What is your process for creating and texturing the models?
What software do you use?
Other than that, I will be keeping an eye out for more of your models as you are what I aspire to be as a hobbyist 3D artist.
Thanks for asking! I'll apologize ahead of time I'm not the best a writing but I hope my answers will be helpful and fun to read
1: I'm really inspired by arcane and into the spider verse! I love the way they can make 3d look like paintings or comic books I love to stylize 3d and I hope with more practice I can make my 3d art come off as different 2d styles. I'm also a big fan of the old low poly games look with the silly pixel texture it's kinda a funny balance between wanting my art to look nothing like 3d and wanting it embrace the sillies of the art form.
2a modeling: I start with cubes for almost everything I make. I started my 3d art journey with texturing Minecraft skins so I kinda like cubes, it also makes unwrapping it onto a flat plane for texturing just a bit easier for me. Here's an image with the geometry of my silly mailbox model highlighted.
Tumblr media
3: I use Blender to make all my models although I just learned a little bit of 3ds Max in my first 3d animation class, I'm mostly self taught though that being the one semester of a 3d animation class under my belt but youtube has been a gold mine for every question I have about 3d and I've practically learned everything I know about using Blender of youtube tutorials.
2b texturing: I use an add-on called uv pack master in blender to speed up my uv unwrapping process so I can make my texture look nicer faster. As for painting I use the tools in blender to texture my models with a couple extra brushes from another add-on it's outdated though and I should probably find some new brushes lol. This is what my texture looks like btw! It's a little messy but I hope you can find it helpful!
Tumblr media
I'm really passionate about 3d animation and almost everything involving it I love talking about it thank you for asking!
95 notes · View notes
factual-fantasy · 6 months ago
Text
29 asks! Thank you!! :}} 🦀
Tumblr media
I use FireAlpaca! And occasionally MS Paint in specific situations or for fun XDD
FireAlpaca is free and I'd say its good for beginner digital artists, but also has a lot of tools for pros! But keep in mind it's got some quirks and weird bugs sometimes- use it at your own risk! <XD
Tumblr media
Tassels is a much nicer word than "ribbonlike feelers", which is what the pokedex entry's say they are <XDD
And thank you! I'm glad you like that detail!! :))
Tumblr media
Thank you! I'm doing my best not to overdo it <XDD
Tumblr media
@minnesotamedic186
*The bottle sinks into my head and disappears*
Thanks you :}} 👍
Tumblr media
@samcat2
Oh, no no- they are not a couple/gay. They are like the bestest-best brothers :}
Tumblr media
@realmerks6969
:0 .... do I like what-
Tumblr media
@milk-powrit
Yes! Birdos in my AU are decedents from the original Yoshi's. They live on the coast by Daisy's kingdom and have been domesticated by the Delfino people.
While Yoshi's come in all different colors.. Birdos are mostly Pink, Red or shades of purple due to red Cheep-Cheeps being the corner stone of their diet.
Now, the specific/individual Birdo that we know? The one with the bow and everything? That Birdo is supposed to be Daisy's personal pet Birdo. She's very spoiled XDD
Tumblr media
@antisocial-bird
Thank you!! And welcome back! :))
I'm sorry to hear you've got some personal battles and school weighing you down.. <:(( I hope you can salvage some of those connections and make some new ones soon! :}}
Tumblr media
(Refencing this post)
SKJNJ I N G O T S XDDD
Tumblr media
(Refencing this post)
Honestly? That's rather fitting for Emmet- XDD
Tumblr media
I'm glad to hear it! But hey! Don't call it ugly >:(( Its wonderful!! :}}
Tumblr media
@artblock200322022
I'm glad to hear it! :DD And ooo! Whisper?? That's such a cool name!! :}}}
Tumblr media
@illogically-austere
<XD You don't seem happy about it, I'm guessing it was more of a nightmare?
Tumblr media
If you mean which game ending my AU follows..
Its supposed to be a modified version of the 6AM ending. Where Gregory escapes when the front doors open but he doesn't get caught by Vanessa later. He ends up coming back to the Pizzaplex 2 weeks later on his own.
If you mean an ending to the entire AU itself? I have some ideas in mind and just need to take the time to pick one of them--
Tumblr media
@glitchhayden418
:DDD ROSES AND ORANGES!! THANK YOU!! :)))))
Tumblr media
XDD Don't worry, I assumed it was my POV-
Tumblr media
@yourtypicalfoxobserver
:DD Thank you! I'm glad you like what I make! :)))
Tumblr media
Just trying something new! This new lineless pixel style is a change of pace and is helping to keep me out of art block :) 👍👍
Tumblr media
@pinkiexneomorph277
Thank you so much!! :DD And I'll take the thumbs up XDD 👍✨
Tumblr media
(Refencing this post)
.....Well he's got that Papyrus energy tbh-- <XDD
Tumblr media
(Refencing this post)
NOOOO <XDDDD
Tumblr media
(Refencing this post)
AWWWWW 😭😭 THATS SO SAD YET ADORABLEEEE
Tumblr media
🥺Flowers........ 💖🌹💖
Tumblr media
(Referencing the comments of this post)
XDD Don't worry, I'll track em down! >XDD
Tumblr media
@shiocreator (Referencing this post)
WAAAHGH THANK YOU SO MUCH!!! :DDDD
Tumblr media
@kirozil
I'm hanging in there, thank you for asking! :}
My FNAF AU/Recap/Repair project thingy has kind'a been put on the shelf for a while. But that's mostly due to my poor health and being unable to sit at my desk and draw on my PC..
(All my resent posts- this one included- and drawings have been made on a laptop while laying on a couch. All of my FNAF stuff is on my desktop PC :((( )
As for your second question, sorry, I don't take requests! 😅
Thanks for the ask! I hope you have a great day/afternoon/night as well! :}}}
Tumblr media
@empowtisblog
That sounds like me! XD Thank you! I'm glad you liked my Octonauts stuff! :))
Tumblr media
@captain-skyler1987
:DD Thank you! :))) 🍪💖
Tumblr media
@soulful-rodent
I'm hanging in there as best I can 🫠
58 notes · View notes
ethicaltreatmentofcowplants · 3 months ago
Text
Incompetent Gamer Has Technical Questions (re: Whims)
cut out of consideration for my mutuals
So I'll preface this with saying that I think Whims is a really great mod. The creator is clearly a huge fan of the game and put a lot of love (no pun intended) into it which is more than I can say for the last two expansions. And on the whole, it's fairly intuitive - except I just have a few things that I can't figure out how to fine-tune.
Get Sims to automatically redress after sex, especially on home lots. This will be more an issue for my BC if that takes off. As funny as it is to stick peaches over everyone's rear ends, I'd rather not have to micromanage yet one more thing and remind them to cover up again.
Stop Sims from asking if they can join in a pre-existing sex act. Again, more an issue for the BC - I don't really care what my pixel people get up to. But it seems like when a Sim is refused, even if it's one of the nicer options ("no, no one can join in" or "no, but you can watch"), they lose a few friendship points. Also Watchers who submit a pixel for the BC may understandably not want to have them participate in threesomes.
Make only certain rooms/furniture sex locations. Likewise this is just for the ease of screencaps. I've set up what I'm calling the 'shag shed' behind the back of the main building for my BC and increased it to 99 percent likelihood for viable objects (the double bed and the chair). Is that enough?
Any help people can give me would be appreciated <3
19 notes · View notes
k9catastrophe · 5 months ago
Text
Even MORE games for alterhumans!! Just like the last one, these are all games where you play as an animal, but this time they aren't all super realistic!! A few of these cost money, indicated by a "$" next to the title, but all of them are free on the last list!!
Tumblr media
Animal jam [Play Wild!]: Starting off this list with another BANGER as of today, AJPW updates monthly, with a new animal, pet, and den in every update! AJPW released in 2015, 5 years after the classic version! The game is super active and likely always will be, and there's no singleplayer option, but there's no requirement to interact with others to play.
Playable Animals: [every update animal leaves shop with the next update, so im only listing the ones that do NOT rotate.] Choose between Monkey, Bunny, Wolf, Fox, Tiger, or Panda as your first animal, and buy the Arctic Wolf, Horse, Lion, Lemur, Snow Leopard, Arabian Horse, and Eagle later on with your sapphires!
Customizability: you can customize every animal's fur colour, special pattern, eyes, and accessories to your liking!! The wide range of accessories lets every player have their own unique look!!
Rating: I give it a 10/10! I've played AJPW since 2018 and i dont think ill ever quit..
Tumblr media Tumblr media Tumblr media Tumblr media
Dungeon Dogs: Dungeon Dogs is an idle rpg released in 2020 by Pocapp Studios, with tons of dogs to collect and battle with!! It's entirely singleplayer, and im not quite sure how often it updates 😓
Playable Animals: Dogs!
Customizability: With accessories, coats, and pets you unlock upon leveling up, you can customize your dog to look however you'd like!
Rating: 10/10, i like the events and silly main story, and it's fun watching my little team of dogs beat up bears and leopards.
Tumblr media Tumblr media Tumblr media Tumblr media
Castle Cats: Another singleplayer idle rpg released in 2017 by the creators of Dungeon Dogs!! Again unsure of how often it updates 😓
Playable Animals: Just cats!!
Customizability: Just like Dungeon Dogs, you can entirely customize your cat's fur, accessories, and pets upon leveling up!
Rating: 9/10, It's still silly and fun, I just prefer the art on Dungeon Dogs more 💔💔
Tumblr media Tumblr media Tumblr media
$ - Shelter 2: Take care of your four cubs as you fight to survive the wilds. Hunt for them, defend them from predators, and watch them grow up. Released in 2015 by Might and Delight, it's a VERY pretty game <3
Playable Animals: Lynx!!
Customizability: You cannot customize any of the Lynx beyond their names!!
Rating: 10/10! This game is so pretty!! i love the exploration, and the ending is always my favorite part of it!!
Tumblr media Tumblr media Tumblr media Tumblr media
$ - Paws - A Shelter 2 Game: Play as a lynx cub on a quest to get back to your family after getting separated.
Playable Animals: Lynx cub!!
Customizability: You cannot customize them!!
Rating: 10/10!!! The entire game feels like a storybook, it's so cute <3
Tumblr media Tumblr media Tumblr media Tumblr media
$ - Cattails: Released by Falcon Development in 2017, Cattails lets you become a pixel cat, join a clan, raise a family, maybe even create your own clan!! Hunt, gather, participate in seasonal events, decorate your den, just be a cat!!
Playable Animals: Cat!
Customizability: You can customize your eyes and your coat whenever you'd like!! You can buy some coats from shops, unlock coats from quests and redeem LOTS of coats with LOTS of codes!! My favorite is the Winter Snowday !! [Check out this coat colour guide too!!]
Rating: 10/10!! I love the style, and causing chaos with my devsprint is super fun !!
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
$ - WolfQuest [Anniversary Edition]: Released in 2019 by Eduweb, Wolfquest 3 is a pretty realistic wolf game !!!! This version is a lot nicer than the original, and the creators still update it! It even has a multiplayer option!! The main goal is to raise and protect your pups, but you can do whatever you want!!
Playable Animals: Wolf!
Rating: 10/10!! SUCH a pretty game !! I have a black wolf who is like 8 [ingame] years old..
Tumblr media Tumblr media Tumblr media
19 notes · View notes
kimmiessimmies · 11 months ago
Text
Back to Reality
A subway station in Bridgeport, January 1st
Tumblr media Tumblr media Tumblr media
Oof, that's rough. We've all been able to see how these two made the night count, but check-out was at 10, so they're feeling it this morning. That, and, of course, they're returning to their reality, which is a cruel trick I'm playing on them.
Now that this little festive AU thing I did is ending, there's a few things I think I need to say about it all. Especially since I gained a few followers because of my seasonal AU posts (Hi! So happy to see you!) and I guess it's good to point out who these two characters are in the real story.
So, here's James and Sadie, friends and both leads in their band The Hot Wings. They're music students at Honeycomb University and there's... something... between them. There was a lot of built-up tension and eventually they slept together. Once. A lot of emotion followed and while they both claim it's not romantic, I'm not too sure. If you want a quick update on recent events, read Release and Consequences on my WordPress blog by clicking these links. All other past story updates are on my blog too.
In the actual story we're going back to, it's getting close to Spring of 08 (I'll do a post on years and time and all that at some point) and there's a lot to come. For James and Sadie, and for my other characters as well. We have Rachel's Dating Adventure waiting in the wings and we'll be going back to "The Valley" to see how Joshua is doing, among others.
I loved doing this festive AU side story. To escape the writer's block I am currently dealing with and to give "Jadie" a chance to be together for a while. I added in the "I love yous", because they never get to say that in the actual story, other than in a friendly way, and it sort of floats in the air as unspoken words. Them saying it, at the point they did, was something I really wanted to do. To stress that in this AU, they really are both in love and committed to that love.
I was upset the spicy post got flagged though and hope it was just the prude Tumblr bots and it didn't get reported by someone. After all, it was both labelled and tagged appropriately, so if pixel nudity is not your thing, you could have easily avoided it. Also, if I do ever post something that offends someone, please let me know. I'd like to think I'm generally a nice person and quite easy to talk to, so drop me a line.
Anyway, I think the train is coming, so I have to go and make sure James and Sadie get on it. Time to go back to where they need to be. I'm sorry, my lovelies, I'll try to be nicer to you in future. I promise. Maybe.
39 notes · View notes
space-reindeer · 21 days ago
Text
I’m making a small game inspired by The Binding of Issac, BUT WITH BIRDS! because birds are cool ofc UvU
So I was thinking of posting one of the characters that will be in the game (probably will be a boss along side another character)
Tumblr media
This silly has no name yet, but I know he gives off Fizzarolli vibes so I don’t need anything other than that (if anyone does want to suggest a name, maybe I’ll use it)
Tumblr media
And some nicer looking pixel art of the silly
(note idc if no one cares about my silly birds, I will still show them to the world regardless)
(and sry if I misspelled anything, I can’t spell even if my life depended on it, sooo have fun decoding what I say if that happened :D )
7 notes · View notes
lv-tangle-universe-blog · 1 month ago
Text
Tumblr media
The whole sketch sheet is complete, finished shaded, and more. I spent too much time on this... Of course, when I took the picture.It's been a week or more since it been done, i thought it'd be fun to try to write the story a little bit while posting the other pictures. Since it's a little undercooked now, I fear I burned it... These next words are more of closing thoughts...
(Game over, she swore she saw those words before up there. In the blackness of the void, but they're a lot more sugary than last time, last time? The memory slowly came to rear its ugly ahead. Oh yeah, this happened before.... But back then, there was more of a red glare. This was a soft, sugary game. Of course, the game over would be different, but the words underneath it... Insert four quarters to continue, rummaging around the pockets. Those are normally filled with the brim of code data to help her, to find nothing. Of course, she looks down at her body. Seeing the sugary facade slowly go first pixel by pixel, revealing the horrible truth underneath, and pretty soon that will go to... But why is it so painfully slow? The deletion process was a lot faster last time,... A sigh escapes her lips. She has accepted this situation... There's nothing here, but a void of black and a mistake, and the words...
She figured she would reflect on the past. Well, she's here to review everything, as her thoughts scramble for panic that she's trying to suppress, a memory popped up a good memory of the twins, helping her decorate and make her own little garage area sense she didn't have one,... She saw what happened to road blasters from the highest point of the bleachers quickly running down to her siblings that she loved even though she caused chaos on the track whenever she was on, she still cared about them, she tried to yell at them, tried to get them out of the game, but they wouldn't listen, "i should've drive them out myself. Or at least put myself in the player position so the game would still run, i guess I can't change it now. I hope wherever they are, they're okay. ".... A clunking sound could be heard to roll out.The void, like a quarter, was being inserted. She looked up at the words, Insert three quarters to continue,... She stared at it confused, didn't it say four?, penny for your thoughts munch?, with a huff, she tried to think of something else for a bit since the thought of turbo time is so painful,
Vanellope...oh... I wish I would have been nicer to my little sister... Teach her how to glitch more effectively... at least keep her safe... I couldn't even do that..."If it makes up for anything, I am sorry, my little glitch," she mumbled... Another quarter sound can be heard, 2..."So I guess this self reflection is helping somewhat. "... A bit of desperation finally seeps into her code, encouraging her to think of something else as the last bits of pixels fade from the sugary facade. Revealing an inverse coloration of turbo, looking down at herself, she is reminded that she is just a copy of a shadow of a man.That is so selfish it hurts...
Now, thinking about it, what is she even supposed supposed to be... Everyone tells her that she has removed the code, but no one tells her what that code is... Or what it is, since she's not a her anymore... Can she even keep that monocle... She doesn't see why not since she has nothing else to show her identity... thought it occurred to her. She never thought of what she's supposed to be doing. Or what her code is telling her to do, thinking back. She always finds joy in driving and causing chaos for the other drivers around her throwing stuff, knocking over barrels, she had to keep that on the down low for sugar rush, and it drove her mad, when getting those sugar cubes during a race? Oh, it was heaven either to wait until an affordable opportunity to screw over as many racers as possible or do it right away. Just for the heck of it and to see the look on their faces... I'm an enemy racer, of course, I take joy out of seeing a player, spin out... Whoa, where did that come from... She blinked a couple of times. It must have been her code that finally reached out to her to tell her what she was... An enemy racer,ha, everything makes sense now... her want to ruin her game, other games just for the sake of screwing over the players. She can kinda see why her code was kind of removed now, but to go to extremes, to completely crash, sugar rush was a little overboard, "i guess taking things too far is kind of my specialty"..."And besides, the game wouldn't be fun without some form of antagonist,"... She laughed and giggled, finding pure joy, just the thought looking up at that face behind the screen with an angry scowl. On their face, mad at her for ruining their fun time... Then, the realization hits her. She's just deleted code. The code itself had to reach out to the spreadsheet of turbo and invert the colors just to give her a model..."i guess in a way I was doing my job, hehe," her laughter died down, that doesn't excuse her actions, not even close, causing a pit in her stomach, the quarter sound hitting the bank plays again...1...
She started to cry a little... She couldn't think of anything else that she wanted to reflect on, only her anger on turbo and what he had done. It makes sense now. On why is she so angry at him all the time. She's supposed to be a rival or a straight-up. Antagonist to him... It doesn't give her an excuse to be so mean to him. She could have been better about it, then again, given what he has done to Sugar Rush. She should've knocked him in the head until he passed out, but instead, she thought she would be the better person and work alongside him to keep herself safe... She couldn't even guarantee that she wouldn't be erased... So half of his actions did fall upon her to do... All for what... Attention that she's probably never gonna get... That word came up again... Attention... Does it even matter?... The players are gonna hate her anyway... Maybe because she saw the ego in him growing and did nothing about it... If she did do something, He would just probably ignore her or call her names, throw her in a corner, and forget about her... Maybe she's mad at him for being such a selfish monster... No, that's being a hypocrite... Cause she was a monster herself... She wanted this goal so bad that she was willing to hurt herself for it... Well, that's not a healthy thought process... And it clearly shows on her precious lowrider...huh... "I guess I have a problem. Maybe if I asked ralph for help, he would help me to?".... She thought about it... ralph did say there was a support group for bad guys... And under some technical terms, she is a bad guy... Maybe they could help... That's if... She was still alive... She slowly looks down in despair...
Half of her actual body is gone... But the sound of a quarter filled in the space as her head snapped up, the screen was going bright... And she can see, it's starting to sparkle, like the sugar cubes, she tried to make out something in the brightness, and she swears she could see mister lickwhack but she wasn't able to get much details before something jabs into her from her back, regenerating the sugary facade, and everything else in a blink of an eye, knocking her out, slowly wiping her memories of this experience, only keeping the important stuff, before everything going bright again,... Press start)
This was mostly inspired by the game over fan Fics that I came across. If I ever figure out how to link text, I will put them here..
13 notes · View notes
deatherella · 1 year ago
Text
Tumblr media Tumblr media
More goodies from my folder of stuff to upload. This post has conversions from meshes by Bats From Westeros. Above is their Red Box meshes - open and closed. They were bigger than all the table surfaces so I scaled them down.
Tumblr media Tumblr media Tumblr media Tumblr media
Here are their Jubilee State Coach and Stafford Carriage. I made them out of a coffee table so we could plop sitting deco sims in them or use Inge's little seat mod to put Sims in them. I am not happy with how the textures turned out after shrinking down the 4000+ pixel templates. If anyone out there is ambitious, can you tear into them and make us nicer looking textures??? I kept trying this and that and got fed up with it, I confess. I think I put them in the vehicles category of the catalog.
Download.
53 notes · View notes
andymakesgames · 7 months ago
Text
Balatro-Inspired Spinning Card Tweetcart Breakdown
I recently made a tweetcart of a spinning playing card inspired by finally playing Balatro, the poker roguelike everybody is talking about.
If you don't know what a tweetcart is, it's a type of size-coding where people write programs for the Pico-8 fantasy console where the source code is 280 characters of less, the length of a tweet.
I'm actually not on twitter any more, but I still like 280 characters as a limitation. I posted it on my mastodon and my tumblr.
Here's the tweetcart I'm writing about today:
Tumblr media
And here is the full 279 byte source code for this animation:
a=abs::_::cls()e=t()for r=0,46do for p=0,1,.025do j=sin(e)*20k=cos(e)*5f=1-p h=a(17-p*34)v=a(23-r)c=1+min(23-v,17-h)%5/3\1*6u=(r-1)/80z=a(p-.2)if(e%1<.5)c=a(r-5)<5and z<u+.03and(r==5or z>u)and 8or 8-sgn(h+v-9)/2 g=r+39pset((64+j)*p+(64-j)*f,(g+k)*p+(g-k)*f,c)end end flip()goto _
This post is available with much nicer formatting on the EMMA blog. You can read it here.
You can copy/paste that code into a blank Pico-8 file to try it yourself. I wrote it on Pico-8 version 0.2.6b.
I'm very pleased with this cart! From a strictly technical perspective I think it's my favorite that I've ever made. There is quite a bit going on to make the fake 3D as well as the design on the front and back of the card. In this post I'll be making the source code more readable as well as explaining some tools that are useful if you are making your own tweetcarts or just want some tricks for game dev and algorithmic art.
Expanding the Code
Tweetcarts tend to look completely impenetrable, but they are often less complex than they seem. The first thing to do when breaking down a tweetcart (which I highly recommend doing!) is to just add carriage returns after each command.
Removing these line breaks is a classic tweetcart method to save characters. Lua, the language used in Pico-8, often does not need a new line if a command does not end in a letter, so we can just remove them. Great for saving space, bad for readability. Here's that same code with some line breaks, spaces and indentation added:
a=abs ::_:: cls() e=t() for r=0,46 do for p=0,1,.025 do j=sin(e)*20 k=cos(e)*5 f=1-p h=a(17-p*34) v=a(23-r) c=1+min(23-v,17-h)%5/3\1*6 u=(r-1)/80 z=a(p-.2) if(e%1<.5) c= a(r-5) < 5 and z < u+.03 and (r==5 or z>u) and 8 or 8-sgn(h+v-9)/2 g=r+39 pset((64+j)*p+(64-j)*f,(g+k)*p+(g-k)*f,c) end end flip()goto _
Note: the card is 40 pixels wide and 46 pixels tall. Those number will come up a lot. As will 20 (half of 40) and 23 (half of 46).
Full Code with Variables and Comments
Finally, before I get into what each section is doing, here is an annotated version of the same code. In this code, variables have real names and I added comments:
[editor's note. this one came out terribly on tumblr. Please read the post on my other blog to see it]
This may be all you need to get a sense of how I made this animation, but the rest of this post will be looking at how each section of the code contributes to the final effect. Part of why I wanted to write this post is because I was happy with how many different tools I managed to use in such a small space.
flip() goto_
This pattern shows up in nearly every tweetcart:
::_:: MOST OF THE CODE flip()goto _
This has been written about in Pixienop's Tweetcart Basics which I highly recommend for anybody curious about the medium! The quick version is that using goto is shorter than declaring the full draw function that Pico-8 carts usually use.
Two Spinning Points
The card is drawn in rows starting from the top and going to the bottom. Each of these lines is defined by two points that move around a center point in an elliptical orbit.
The center of the top of the card is x=64 (dead center) and y=39 (a sort of arbitrary number that looked nice).
Then I get the distance away from that center that my two points will be using trigonometry.
x_dist = sin(time)*20 y_dist = cos(time)*5
Here are those points:
Tumblr media
P1 adds x_dist and y_dist to the center point and P2 subtracts those same values.
Those are just the points for the very top row. The outer for loop is the vertical rows. The center x position will be the same each time, but the y position increases with each row like this: y_pos = row+39
Here's how it looks when I draw every 3rd row going down:
Tumblr media
It is worth noting that Pico-8 handles sin() and cos() differently than most languages. Usually the input values for these functions are in radians (0 to two pi), but in Pico-8 it goes from 0 to 1. More info on that here. It takes a little getting used to but it is actually very handy. More info in a minute on why I like values between 0 and 1.
Time
In the shorter code, e is my time variable. I tend to use e for this. In my mind it stands for "elapsed time". In Pico-8 time() returns the current elapsed time in seconds. However, there is a shorter version, t(), which obviously is better for tweetcarts. But because I use the time value a lot, even the 3 characters for t() is often too much, so I store it in the single-letter variable e.
Because it is being used in sine and cosine for this tweetcart, every time e reaches 1, we've reached the end of a cycle. I would have liked to use t()/2 to slow this cart down to be a 2 second animation, but after a lot of fiddling I wound up being one character short. So it goes.
e is used in several places in the code, both to control the angle of the points and to determine which side of the card is facing the camera.
Here you can see how the sine value of e controls the rotation and how we go from showing the front of the card to showing the back when e%1 crosses the threshold of 0.5.
Tumblr media
Drawing and Distorting the Lines
Near the top and bottom of the loop we'll find the code that determines the shape of the card and draws the horizontal lines that make up the card. Here is the loop for drawing a single individual line using the code with expanded variable names:
for prc = 0,1,.025 do x_dist = sin(time)*20 y_dist = cos(time)*5 ... y_pos = row+39 pset( (64+x_dist)*prc + (64-x_dist)*(1-prc), (y_pos+y_dist)*prc + (y_pos-y_dist)*(1-prc), color) end
You might notice that I don't use Pico-8's line function! That's because each line is drawn pixel by pixel.
This tweetcart simulates a 3D object by treating each vertical row of the card as a line of pixels. I generate the points on either side of the card(p1 and p2 in this gif), and then interpolate between those two points. That's why the inner for loop creates a percentage from 0 to 1 instead of pixel positions. The entire card is drawn as individual pixels. I draw them in a line, but the color may change with each one, so they each get their own pset() call.
Here's a gif where I slow down this process to give you a peek at how these lines are being drawn every frame. For each row, I draw many pixels moving across the card between the two endpoints in the row.
Tumblr media
Here's the loop condition again: for prc = 0,1,.025 do
A step of 0.025 means there are 40 steps (0.025 * 40 = 1.0). That's the exact width of the card! When the card is completely facing the camera head-on, I will need 40 steps to make it across without leaving a gap in the pixels. When the card is skinnier, I'm still drawing all 40 pixels, but many of them will be in the same place. That's fine. The most recently drawn one will take priority.
Getting the actual X and Y position
I said that the position of each pixel is interpolated between the two points, but this line of code may be confusing:
y_pos = row+39 pset( (64+x_dist)*prc + (64-x_dist)*(1-prc), (y_pos+y_dist)*prc + (y_pos-y_dist)*(1-prc), color)
So let's unpack it a little bit. If you've ever used a Lerp() function in something like Unity you've used this sort of math. The idea is that we get two values (P1 and P2 in the above example), and we move between them such that a value of 0.0 gives us P1 and 1.0 gives us P2.
Here's a full cart that breaks down exactly what this math is doing:
Tumblr media
::_:: cls() time = t()/8 for row = 0,46 do for prc = 0,1,.025 do x_dist = sin(time)*20 y_dist = cos(time)*5 color = 9 + row % 3 p1x = 64 + x_dist p1y = row+39 + y_dist p2x = 64 - x_dist p2y = row+39 - y_dist x = p2x*prc + p1x*(1-prc) y = p2y*prc + p1y*(1-prc) pset( x, y, color) end end flip()goto _
I'm defining P1 and P2 very explicitly (getting an x and y for both), then I get the actual x and y position that I use by multiplying P2 by prc and P1 by (1-prc) and adding the results together.
This is easiest to understand when prc is 0.5, because then we're just taking an average. In school we learn that to average a set of numbers you add them up and then divide by how many you had. We can think of that as (p1+p2) / 2. This is the same as saying p1*0.5 + p2*0.5.
But the second way of writing it lets us take a weighted average if we want. We could say p1*0.75 + p2*0.25. Now the resulting value will be 75% of p1 and 25% of p2. If you laid the two values out on a number line, the result would be just 25% of the way to p2. As long as the two values being multiplied add up to exactly 1.0 you will get a weighted average between P1 and P2.
I can count on prc being a value between 0 and 1, so the inverse is 1.0 - prc. If prc is 0.8 then 1.0-prc is 0.2. Together they add up to 1!
I use this math everywhere in my work. It's a really easy way to move smoothly between values that might otherwise be tricky to work with.
Compressing
I'm using a little over 400 characters in the above example. But in the real cart, the relevant code inside the loops is this:
j=sin(e)*20 k=cos(e)*5 g=r+39 pset((64+j)*p+(64-j)*f,(g+k)*p+(g-k)*f,c)
which can be further condensed by removing the line breaks:
j=sin(e)*20k=cos(e)*5g=r+39pset((64+j)*p+(64-j)*f,(g+k)*p+(g-k)*f,c)
Because P1, P2 and the resulting interpolated positions x and y are never used again, there is no reason to waste chars by storing them in variables. So all of the interpolation is done in the call to pset().
There are a few parts of the calculation that are used more than once and are four characters or more. Those are stored as variables (j, k & g in this code). These variables tend to have the least helpful names because I usually do them right at the end to save a few chars so they wind up with whatever letters I have not used elsewhere.
Spinning & Drawing
Here's that same example, but with a checker pattern and the card spinning. (Keep in mind, in the real tweetcart the card is fully draw every frame and would not spin mid-draw)
Tumblr media
This technique allows me to distort the lines because I can specify two points and draw my lines between them. Great for fake 3D! Kind of annoying for actually drawing shapes, because now instead of using the normal Pico-8 drawing tools, I have to calculate the color I want based on the row (a whole number between0 and 46) and the x-prc (a float between 0 and 1).
Drawing the Back
Here's the code that handles drawing the back of the card:
h=a(17-p*34) v=a(23-r) c=1+min(23-v,17-h)%5/3\1*6
This is inside the nested for loops, so r is the row and p is a percentage of the way across the horizontal line.
c is the color that we will eventually draw in pset().
h and v are the approximate distance from the center of the card. a was previously assigned as a shorthand for abs() so you can think of those lines like this:
h=abs(17-p*34) v=abs(23-r)
v is the vertical distance. The card is 46 pixels tall so taking the absolute value of 23-r will give us the distance from the vertical center of the card. (ex: if r is 25, abs(23-r) = 2. and if r is 21, abs(23-r) still equals 2 )
As you can probably guess, h is the horizontal distance from the center. The card is 40 pixels wide, but I opted to shrink it a bit by multiplying p by 34 and subtracting that from half of 34 (17). The cardback just looks better with these lower values, and the diamond looks fine.
The next line, where I define c, is where things get confusing. It's a long line doing some clunky math. The critical thing is that when this line is done, I need c to equal 1 (dark blue) or 7 (white) on the Pico-8 color pallette.
Here's the whole thing: c=1+min(23-v,17-h)%5/3\1*6
Here is that line broken down into much more discrete steps.
c = 1 --start with a color of 1 low_dist = min(23-v,17-h) --get the lower inverted distance from center val = low_dist % 5 --mod 5 to bring it to a repeating range of 0 to 5 val = val / 3 --divide by 3. value is now 0 to 1.66 val = flr(val) --round it down. value is now 0 or 1 val = val * 6 --multiply by 6. value is now 0 or 6 c += val --add value to c, making it 1 or 7
The first thing I do is c=1. That means the entire rest of the line will either add 0 or 6 (bumping the value up to 7). No other outcome is acceptable. min(23-v,17-h)%5/3\1*6 will always evaluate to 0 or 6.
I only want the lower value of h and v. This is what will give it the nice box shape. If you color the points inside a rectangle so that ones that are closer to the center on their X are one color and ones that are closer to the center on their Y are a different color you'll get a pattern with clean diagonal lines running from the center towards the corners like this:
Tumblr media
You might think I would just use min(v,h) instead of the longer min(23-v,17-h) in the actual code. I would love to do that, but it results in a pattern that is cool, but doesn't really look like a card back.
Tumblr media
I take the inverted value. Instead of having a v that runs from 0 to 23, I flip it so it runs from 23 to 0. I do the same for h. I take the lower of those two values using min().
Then I use modulo (%) to bring the value to a repeating range of 0 to 5. Then I divide that result by 3 so it is 0 to ~1.66. The exact value doens't matter too much because I am going round it down anyway. What is critical is that it will become 0 or 1 after rounding because then I can multiply it by a specific number without getting any values in between.
Wait? If I'm rounding down, where is flr() in this line: c=1+min(23-v,17-h)%5/3\1*6?
It's not there! That's because there is a sneaky tool in Pico-8. You can use \1 to do the same thing as flr(). This is integer division and it generally saves a 3 characters.
Finally, I multiply the result by 6. If it is 0, we get 0. If it is 1 we get 6. Add it to 1 and we get the color we want!
Here's how it looks with each step in that process turned on or off:
Tumblr media
A Note About Parentheses
When I write tweetcarts I would typically start by writing this type of line like this: c=1+ (((min(23-v,17-h)%5)/3) \1) *6
This way I can figure out if my math makes sense by using parentheses to ensure that my order of operations works. But then I just start deleting them willy nilly to see what I can get away with. Sometimes I'm surprised and I'm able to shave off 2 characters by removing a set of parentheses.
The Face Side
The face side with the diamond and the "A" is a little more complex, but basically works the same way as the back. Each pixel needs to either be white (7) or red (8). When the card is on this side, I'll be overwriting the c value that got defined earlier.
Tumblr media
Here's the code that does it (with added white space). This uses the h and v values defined earlier as well as the r and p values from the nested loops.
u=(r-1)/80 z=a(p-.2) if(e%1<.5) c= a(r-5) < 5 and z < u+.03 and (r==5 or z>u) and 8 or 8-sgn(h+v-9)/2
Before we piece out what this is doing, we need to talk about the structure for conditional logic in tweetcarts.
The Problem with If Statements
The lone line with the if statement is doing a lot of conditional logic in a very cumbersome way designed to avoid writing out a full if statement.
One of the tricky things with Pico-8 tweetcarts is that the loop and conditional logic of Lua is very character intensive. While most programming language might write an if statement like this:
if (SOMETHING){ CODE }
Lua does it like this:
if SOMETHING then CODE end
Using "then" and "end" instead of brackets means we often want to bend over backwards to avoid them when we're trying to save characters.
Luckily, Lua lets you drop "then" and "end" if there is a single command being executed inside the if.
This means we can write
if(e%1 < 0.5) c=5
instead of
if e%1 < 0.5 then c=5 end
This is a huge savings! To take advantage of this, it is often worth doing something in a slightly (or massively) convoluted way if it means we can reduce it to a single line inside the if. This brings us to:
Lua's Weird Ternary Operator
In most programming language there is an inline syntax to return one of two values based on a conditional. It's called the Ternary Operator and in most languages I use it looks like this:
myVar = a>b ? 5 : 10
The value of myVar will be 5 if a is greater than b. Otherwise is will be 10.
Lua has a ternary operator... sort of. You can read more about it here but it looks something like this:
myVar = a>b and 5 or 10
Frankly, I don't understand why this works, but I can confirm that it does.
In this specific instance, I am essentially using it to put another conditional inside my if statement, but by doing it as a single line ternary operation, I'm keeping the whole thing to a single line and saving precious chars.
The Face Broken Out
The conditional for the diamond and the A is a mess to look at. The weird syntax for the ternary operator doesn't help. Neither does the fact that I took out any parentheses that could make sense of it.
Here is the same code rewritten with a cleaner logic flow.
--check time to see if we're on the front half if e%1 < .5 then --this if checks if we're in the A u=(r-1)/80 z=a(p-.2) if a(r-5) < 5 and z < u+.03 and (r==5 or z>u) then c = 8 --if we're not in the A, set c based on if we're in the diamond else c = 8-sgn(h+v-9)/2 end end
The first thing being checked is the time. As I explained further up, because the input value for sin() in Pico-8 goes from 0 to 1, the midpoint is 0.5. We only draw the front of the card if e%1 is less than 0.5.
After that, we check if this pixel is inside the A on the corner of the card or the diamond. Either way, our color value c gets set to either 7 (white) or 8 (red).
Let's start with diamond because it is easier.
The Diamond
This uses the same h and v values from the back of the card. The reason I chose diamonds for my suit is that they are very easy to calculate if you know the vertical and horizontal distance from a point! In fact, I sometimes use this diamond shape instead of proper circular hit detection in size-coded games.
Let's look at the line: c = 8-sgn(h+v-9)/2
This starts with 8, the red color. Since the only other acceptable color is 7 (white), tha means that sgn(h+v-9)/2 has to evaluate to either 1 or 0.
sgn() returns the sign of a number, meaning -1 if the number is negative or 1 if the number is positive. This is often a convenient way to cut large values down to easy-to-work-with values based on a threshold. That's exactly what I'm doing here!
h+v-9 takes the height from the center plus the horizontal distance from the center and checks if the sum is greater than 9. If it is, sgn(h+v-9) will return 1, otherwise -1. In this formula, 9 is the size of the diamond. A smaller number would result in a smaller diamond since that's the threshold for the distance being used. (note: h+v is NOT the actual distance. It's an approximation that happens to make a nice diamond shape.)
OK, but adding -1 or 1 to 8 gives us 7 or 9 and I need 7 or 8.
That's where /2 comes in. Pico-8 defaults to floating point math, so dividing by 2 will turn my -1 or 1 into -0.5 or 0.5. So this line c = 8-sgn(h+v-9)/2 actually sets c to 7.5 or 8.5. Pico-8 always rounds down when setting colors so a value of 7.5 becomes 7 and 8.5 becomes 8. And now we have white for most of the card, and red in the space inside the diamond!
The A
The A on the top corner of the card was the last thing I added. I finished the spinning card with the card back and the diamond and realized that when I condensed the whole thing, I actually had about 50 characters to spare. Putting a letter on the ace seemed like an obvious choice. I struggled for an evening trying to make it happen before deciding that I just couldn't do it. The next day I took another crack at it and managed to get it in, although a lot of it is pretty ugly! Luckily, in the final version the card is spinning pretty fast and it is harder to notice how lopsided it is.
I mentioned earlier that my method of placing pixels in a line between points is great for deforming planes, but makes a lot of drawing harder. Here's a great example. Instead of just being able to call print("a") or even using 3 calls to line() I had to make a convoluted conditional to check if each pixel is "inside" the A and set it to red if it is.
I'll do my best to explain this code, but it was hammered together with a lot of trial and error. I kept messing with it until I found an acceptable balance between how it looked and how many character it ate up.
Here are the relevant bits again:
u=(r-1)/80 z=a(p-.2) if a(r-5) < 5 and z < u+.03 and (r==5 or z>u) then c = 8
The two variables above the if are just values that get used multiple times. Let's give them slightly better names. While I'm making edits, I'll expand a too since that was just a replacement for abs().
slope = (r-1)/80 dist_from_center = abs(p-.2) if abs(r-5) < 5 and dist_from_center < slope+.03 and (r==5 or dist_from_center>slope) then c = 8
Remember that r is the current row and p is the percentage of the way between the two sides where this pixel falls.
u/slope here is basically how far from the center line of the A the legs are at this row. As r increases, so does slope (but at a much smaller rate). The top of the A is very close to the center, the bottom is further out. I'm subtracting 1 so that when r is 0, slope is negative and will not be drawn. Without this, the A starts on the very topmost line of the card and looks bad.
z/dist_from_center is how far this particular p value is from the center of the A (not the center of the card), measured in percentage (not pixels). The center of the A is 20% of the way across the card. This side of the card starts on the right (0% is all the way right, 100% is all the way left), which is why you see the A 20% away from the right side of the card.
Tumblr media
These values are important because the two legs of the A are basically tiny distance checks where the slope for a given r is compared against the dist_from_center. There are 3 checks used to determine if the pixel is part of the A.
if a(r-5) < 5 and z < u+.03 and (r==5 or z>u) then
The first is abs(r-5) < 5. This checks if r is between 1 and 9, the height of my A.
The second is dist_from_center < slope+.03. This is checking if this pixel's x distance from the center of the A is no more than .03 bigger than the current slope value. This is the maximum distance that will be considered "inside" the A. All of this is a percentage, so the center of the A is 0.20 and the slope value will be larger the further down the A we get.
Because I am checking the distance from the center point (the grey line in the image above), this works on either leg of the A. On either side, the pixel can be less than slope+.03 away.
Finally, it checks (r==5 or dist_from_center>slope). If the row is exactly 5, that is the crossbar across the A and should be red. Otherwise, the distance value must be greater than slope (this is the minimum value it can have to be "inside" the A). This also works on both sides thanks to using distance.
Although I am trying to capture 1-pixel-wide lines to draw the shape of the A, I could not think of a cleaner way than doing this bounding check. Ignoring the crossbar on row 5, you can think about the 2nd and 3rd parts of the if statement essentially making sure that dist_from_center fits between slope and a number slightly larger than slope. Something like this:
slope < dist_from_center < slope+0.03
Putting it Together
All of this logic needed to be on a single line to get away with using the short form of the if statement so it got slammed into a single ternary operator. Then I tried removing parentheses one at a time to see what was structurally significant. I wish I could say I was more thoughtful than that but I wasn't. The end result is this beefy line of code:
if(e%1<.5)c=a(r-5)<5and z<u+.03and(r==5or z>u)and 8or 8-sgn(h+v-9)/2
Once we've checked that e (our time value) is in the phase where we show the face, the ternary operator checks if the pixel is inside the A. If it is, c is set to 8 (red). If it isn't, then we set c = 8-sgn(h+v-9)/2, which is the diamond shape described above.
That's It!
Once we've set c the tweetcart uses pset to draw the pixel as described in the section on drawing the lines.
Here's the full code and what it looks like when it runs again. Hopefully now you can pick out more of what's going on!
a=abs::_::cls()e=t()for r=0,46do for p=0,1,.025do j=sin(e)*20k=cos(e)*5f=1-p h=a(17-p*34)v=a(23-r)c=1+min(23-v,17-h)%5/3\1*6u=(r-1)/80z=a(p-.2)if(e%1<.5)c=a(r-5)<5and z<u+.03and(r==5or z>u)and 8or 8-sgn(h+v-9)/2 g=r+39pset((64+j)*p+(64-j)*f,(g+k)*p+(g-k)*f,c)end end flip()goto _
Tumblr media
I hope this was helpful! I had a lot of fun writing this cart and it was fun to break it down. Maybe you can shave off the one additional character needed to slow it down by using e=t()/2 a bit. If you do, please drop me a line on my mastodon or tumblr!
And if you want to try your hand at something like this, consider submitting something to TweetTweetJam which just started! You'll get a luxurious 500 characters to work with!
Links and Resources
There are some very useful posts of tools and tricks for getting into tweetcarts. I'm sure I'm missing many but here are a few that I refer to regularly.
Pixienop's tweetcart basics and tweetcart studies are probably the single best thing to read if you want to learn more.
Trasevol_Dog's Doodle Insights are fascinating, and some of them demonstrate very cool tweetcart techniques.
Optimizing Character Count for Tweetcarts by Eli Piilonen / @2DArray
Guide for Making Tweetcarts by PrincessChooChoo
The official documentation for the hidden P8SCII Control Codes is worth a read. It will let you do wild things like play sound using the print() command.
I have released several size-coded Pico-8 games that have links to heavily annotated code:
Pico-Mace
Cold Sun Surf
1k Jump
Hand Cram
And if you want to read more Pico-8 weirdness from me, I wrote a whole post on creating a networked Pico-8 tribute to Frog Chorus.
15 notes · View notes
changingplumbob · 5 months ago
Text
Villareal: Chapter 6, Part 14
A chill but speedy Friday with my pixels.
Tumblr media
CW: Moderate sim spice. Content Warning Guide
For ease of reading if the toddlers are trying to say real words I'll put the English in brackets. Luna (mummy) and Devin (mama) use some German and Italian. Bambino/s (Italian) Male child/children Caro (Italian) Dear
The family are sitting down to pasta when Rilian notices Devin’s hair is different…
Rilian: Mama hair? How?
Devin: Caro, it’s called being the watchers favourite. Don’t even need a salon
Alfred: What watcher
Luna: Your Mama and Zio think there is someone watching over us in our life, helping us out and keeping us safe. I don’t but you get to believe whatever you want. Many other sims think the watcher exists
Devin: The watcher loves us bambinos, you can tell
Rilian: How
Alfred: *sings song of watcher adoration*
Devin: Little things. We’re very lucky, always dressed nicely…
Joey: We’re generally happier than the average sim and have nicer names to. There are other things but you’re too young to understand loading screens yet
Tumblr media
Luna: It’s a big concept
Rilian: We big
Devin: Well you don’t have to decide if you believe in the watcher or not tonight. And no matter what Mama and Mummy will still love you
Dinner finishes and the toddlers get sorted for bed. Joey knows what he thinks, no nephews of his will grow up not believing in the watcher. Mod dangers lurk everywhere, the boys must be prepared! And stepping back from the paranoid sim…
Devin practices some of the scripts she’s been sent before bed to see how she feels about the characters. There are some interesting ones, she’ll have to get Luna to read them when she has time.
Luna: They’re asleep, shall we turn in
Devin: I hope you didn’t mind me talking about the watcher
Luna: They had to be introduced to the idea sometime. Now come to bed
Tumblr media
In the morning Devin tries once again to bring Luna around to the idea of a watcher.
Devin: So how do you think my hair changed
Luna: Plenty of people have sudden hair changes, just look at your sisters
Devin: And you don’t think your brothers look more polished recently?
Luna: I suppose they have tidied themselves up a bit
Devin: Lu the watcher let me impregnate you, how can you not believe in them
Luna: I’m trying it’s just… if there is a watcher why won’t they give me answers about my mum
Devin: Oh... I can get that view. But Lu the watcher works on her own timeframe, I’m sure one day we’ll find out
Luna: Well when we do, then I’ll believe. Deal?
Devin: Deal!!! The watcher is going to help me with this I know it
Tumblr media
Following a breakfast where Alfred scoffed and Rilian barely made a dent Devin shepherds the twins to the bathroom. Luna and Joey head to their jobs while Devin makes sure each twin gets squeaky clean. Afterwards the trio move to the master bedroom where Devin works on her acting skill. She reaches level 10! Alfred also maxes his communication skill!
Tumblr media
Following a quick trip to Tartosa to give Calista and Aaron some family photos the twins spend their afternoon working on their motor skill while Devin gets her workout in. Look at her doing those laps without even shaking her sunglasses off! Swim done she watches the bambinos while knitting a gift for everyone’s favourite rooster, Mr Cluckton himself!
Tumblr media
With Cassandra’s eldest having school responsibilities now the regular Friday best friends lunch play date has shifted to dinner time. Devin gives Cassandra her gift for Cluckton and the Nishidake family and Chopra family descend on the picnic basket for some fish pie and bagels. Unfortunately most are sad due to a mod but hey, at least the gang is together!
Tumblr media
Following the picnic Joey gets a notification that he’s matched with another sim who is down for no strings fun. Inviting her in he has to admit to himself that she’s not his normal type (his panel said he found her unattractive, excuse me sir) but woohoo is woohoo and he’s always happy to get some. She expresses interest in his jacuzzi tub so taking her by the hand he shows her.
Joey: The water is good, come on in
Starting to remove her dress Luisa hesitates for a second
Luisa: I should probably tell you… just so you’re not crazy shocked… umm… I probably don’t have the pixel parts you’re expecting
Joey: You see yourself as a woman right? Your profile said
Luisa: Yes…
Tumblr media
Joey: Then that’s how I see you. The water in here is good no matter what you do or don’t have under that dress
Luisa exhales in relief and strips off to climb in beside him.
Luisa: Sorry for being weird I’ve just had some… bad reactions
Joey: Clearly jerks. I have to tell you though, this is new to me. Tell me what you want me doing or not doing. I want this to be as good for you as I can see it being for me. I don’t want you being uncomfortable
Luisa: I have a feeling I won’t be. Something is telling me I clicked on the right profile
Joey: It’s my eyes isn’t it? The perfect kind of chocolate to drown in
Luisa laughs and leans down to close the gap between them with a kiss.
Tumblr media
Nightmare alert! Poor Rilian has been chased by a monster into a lake of fire. Waking up sad he goes to try find his parents. In their room Luna is working on her next lecture and Devin is practicing her guitar. They both stop when the crying toddler walks in and bundles him up with kisses. Luna carries him to bed and Devin settles him down while Luna tucks in Alfred, making sure he stays asleep. Devin only has to read a few pages before Rilian returns to dreamland, hopefully with less fire.
Tumblr media
Pulling the door of the nursery shut the pair are alone in their room where Luna dips Devin into a passionate kiss.
Luna: You are such a wonderful woman
Devin: I’m inspired by my wife *kisses* I know I wanted to wait for a third kid but maybe that was just me being a coward. I shouldn’t assume you’ll get postpartum depression again
Luna: And I shouldn’t assume I won’t be affected again. Perhaps we just need another solution like a surrogate or a science baby
Devin: Do you know how much I love you
Luna: I imagine it’s almost as much as I love you
Undressing each other the pair head to bed.
Tumblr media
Luna admits that if she can’t find out if her mother had postpartum depression, it’s wise to avoid her getting pregnant again. And of course Devin has her career to think of, a career where she needs to be in shape. But a baby… they both want another baby. They’ll have to look into the options but they have faith a solution is out there for them. One they can find together.
Tumblr media
That’s it for now for the Villareals, see you later Del Sol Valley!
Tumblr media
Previous ... Next (Nishidake)
19 notes · View notes
messydiabolical · 8 months ago
Text
@dandenbo asked me for the art asks: 🎠What is a typical 'workflow' for a piece from idea to finished? It turns out to be a long answer so here's its own post, under the cut to save your dash! How I go from screenshot to painting: (This is not intended to be a 'this is how you do it!' kind of guide. I absolutely don't do an optimal route, this is just how I go about painting and what works for me! I've done a workflow for a screenshot to painting as I do a few different things but this is one I could explain somewhat coherently. My comics tend to be created pretty chaotically lol)
Tumblr media Tumblr media
1) I take an ungodly amount of screenshots while playing. Also pester friends for their screenshots or stalk the group discord for interesting shots.
2) Go through all those screenshots cursing why I took so many, looking for those great moments that I want to paint. I’m particularly looking for nice poses/captivating moments, dynamic lighting or interesting expressions, and they don’t need to have all 3 as we can fix some of that in the next step. Here’s the screenshot I chose for my Keahi x Thane piece:
Tumblr media
It was a cute, soft moment between them and I liked the highlight at the edge of their profiles. 3) Refine the screenshot. I don’t use anything fancy for this. I game on windows PC, so I open up the screenshot with windows photo editor. I crop the image, play around with saturation, exposure, contrast, just basic editing until it looks tastier. For this piece I wanted it to be hyper colourful and vibrant, leaning towards warmer tones.
Tumblr media
4) Decide what I will change, then gather references for those changes. In this case I was fortunate that not a lot needed changing. I knew I wanted to move Thane’s eye position to looking at Keahi rather than the way he is slightly off focus, do a more realistic ear with earrings for Keahi, make Thane a little more smiley and lower his eyelid and give Keahi nicer eyelashes. I keep a whole bunch of art guides and tutorials on my PC so I grabbed the necessary ones and sent them to my ipad ready to have on hand for the sketch stage. I have Thane’s character model in XNApose, so I can check things like his eyelid specifically in that (this is actually for a different project but shows you what I mean)
Tumblr media
If I was going to change up the lighting/shading I would also gather references for that. For example sometimes i’ll take screenshots of lighting schemes I love from films/tv shows (think the strong teal and orange scheme in Mad Max or the neons of Blade Runner). Or for precise shadows, I can again use XNApose. I also have a little 3d printed Thane head I can shine a torch at and take photos of to get shadow ideas. For humans there’s lots of reference to be found with online searches, I find pinterest more useful than google for this. For specific expressions or body parts, i’ll just take photos of myself (hand poses, smiling from the right angle etc.) My camera roll is an interesting place. I have drawn drell frills on my neck and on my chest before to see how the lines would fold at certain angles. 5) Setting up a canvas I work in procreate. For a piece like this I try to go pretty big, say 5000 x 4000 pixels, then i’ll crop down later as needed. 300 DPI. As I work, I’ll make duplicates and continue on the copy each fresh session. When i’m finished I make a backup save of the PNG and .procreate files on an SSD. I immediately turn the background colour down to a more muted colour to not burn my retinas. If i’m using a textured background like an oil board i’ll insert it, and any overlays like canvas effects. Set up my layers from the start basically for easy toggling throughout. I try to be good and label things to make life easier, it doesn’t always happen though. I don't wear a digital glove or use paper effect screens but I do have a bottle of screen cleaner and a microfibre cloth handy at all times. 6) Sketch. I’m still very much learning to draw. I tried for a long time to do the classic ‘ball for a head, draw the planes/lines etc. It was a constant struggle and never clicked for me, the ball especially always made things much worse, turning a circle into a 3d image in my head just does not happen. I find it better to just start drawing and work things out as I go (I use procreates reference window to see my screenshot). So I’ll have my sketch in one canvas, and i’ll also have a second canvas with the photo ref on it at the same size, and if I feel like something is really wonky and off i’ll test my lines over the photo to see what’s gone wrong, then go back to the sketch and correct the areas that revealed. Sometimes I’ll use the grid feature if i’m getting stuck.  Here's a few of the sketch stages:
Tumblr media Tumblr media
Here I tried out the lines on the photo and noticed that Thane’s frills were a little too far to the left, and Keahi’s eyebrow needed to arch down towards the nose.In the next pass I correct these:
Tumblr media
Also, and I know i’m gonna get side eye from some people for this but I really could not care less to be honest. On some pieces i’ll just trace the screenshot. Sometime I just want to get to painting, am not in the mood or mindspace for a learning experience, and this is a hobby. It’s my screenshot, no one is getting ripped off. My latest Javik piece was done this way 🤷‍♂️ 6) Painting. I’ll start by blocking in the background and the portrait flats, usually on separate layers. I try to have an idea of the background colour from the start as this can effect the whole piece overall, but sometimes you just gotta change it as you go so having it on a different layer makes this much easier.
Tumblr media
The painting itself I’ll lay down wider areas of colours, then start going in and refining bit by bit, I tend to work on one area at a time, and sometimes I’ll get pretty well rendered on a small area before moving on, other times work on a wider area. It really depends on my mood and what i’m vibing with that day. Like you can see here I’ve done some general messy colouring all over Keahi, but done a lot of refinement on the eyeball:
Tumblr media
7) Finshing the piece, uploading and testing: When I’m sick of rendering the painting and don’t think I can add anything more to it without gnawing my own wrist off, it is time to finish up! I make sure I toggle all the layers I want on, add a top signature layer (lol I lie I forget this all the damn time). Then i’ll upload the piece to my google drive and open it up on my big 4k monitor on my PC, and on my phone, and see how it looks (my ipad is a 9.7inch air). I find that once off my ipad, it often looks a little less saturated and contrasting as it does in procreate. So I might go back and change the levels if it’s too big a difference until it looks decent across devices (it’ll never look perfect on them all though, just gotta find that happy medium).
Tumblr media
8) Posting online I really don’t have any strict steps for this. I know some people go for optimal posting times, and will make multiple copies of their pieces in different sizes to fit better on different sites (damn you instagram and your need for everything to be square). I… do not do any of this lol. I post when I’m done whatever time or day that is. I do tend to reblog/retweet etc before I go to bed, as I live in the UK and that will at least be getting into evening time in US. I reblog my own stuff a fair bit.
16 notes · View notes