#code and pixels 3d animations
Explore tagged Tumblr posts
Text
Technical 3D Animation Capability of Code & Pixels
Code and Pixels is a pioneer in creating 3D Animations for describing a process in detail with 3D Highlights and Hotspots. To provide the greatest possible technology-based user experience, and training, we integrate component-level 3D animations with interactive blowups and 3D Highlights with realistic lighting and rendering techniques.

#3d animations#code and pixels 3d animations#3d highlights and hotspots#code and pixels ietm#interactive blowups#ietm software developer#ietm designers#ietm authoring tool#technical documentation#ietm level iv#interactive electronic technical manual
1 note
·
View note
Text
You thought you were done with collabs?
Now it's my turn...

Welcome one and all!
To my first collab ever!
From May 7th to May 30th
Anyone can join this nearly month-long collab!
Please read the rules and the list of fandoms

The theme is:
Aquatic
From salty seas to flowing Rivers, lakes and ponds of freshwater. Whether it's about swashbuckling pirates to the creatures that lurk beneath the waves. From the water in your aquarium to the water in your bathtub; Anything That associates with water is allowed!
Here are the Rules
!YOU MUST STICK WITH THE THEME!
I will ONLY accept entries from people who are +18 if you are under the age of 18 please don't interact!!
Any entries of depicting explicity with minors, graphic depictions of violence against human and animals, scat or water sports, zoophilia or pokephilia, and incest are not allowed.
If there are any dark themes in writing or artwork please Have a Content Warning
The time frame of this collab will be from today all the way till the 31th of May. Anyone who is late has at least till June 2nd to submit(you'll see why)
OC x Character, OC x OC , character X Reader either romantic or platonic are allowed or just solo characters or OC from fandoms listed below
Crossovers are allowed and encouraged
Mini collabs with other creators are allowed and encouraged (Make sure to credit and tag the user who helped or collabed with you)
Any amount of drawing is accepted whether it be messy sketches, full digital, Pixel art or traditional, 3D or 2D.
Writing is also accepted!
Animations and videos are also accepted!
AI ARTWORK, and Writing IS NOT ACCEPTED and will be called out
Plagiarism tracing or stealing others work is Not Accepted and will be rightfully called out.
AI chatbots are accepted under certain conditions!(See below)
Must only be from Janitor AI.
And I must be able to see what you put for description.
Your code/whatever you wrote for said description must not be copy and pasted from someone else's work, what you wrote must be original However using as inspiration with CONSENT is okay
Finally You must post a screenshot of the bot and tag me.
If you have any questions about the collab please comment! I will respond as quickly as I can!

Please use (#Ro.collabaquatic) in your tags or tag me so I may see it!
When the collab is finished on June 1st I will compile all submissions in a mega post and post it for everyone to see!!!
And finally the fandoms that Can join:
Pokemon
What in 'hell' is bad?
Obey me!!
Zenless Zone Zero
Honkai Star Rail
Genshin Impact
Wuthering Waves
Have fun and please don't worry if you can't do the collaboration It's all for fun :)
Stardew Valley
Pretty artwork and pictures of pet fish (especially guppies) but they will be in their own category :)
40 notes
·
View notes
Text
Watchers and wanderers,
we are now RECRUITING with a brand-new Recruitment Form!
Please read below for more info and access to the forms.
We're looking to greatly boost our team size to handle the scope of the project, so we say it's the best time for applying - even if you've already applied in a previous form.
The form will remain open for an indefinite amount of time, during which we'll view and review applications and recruit new team members periodically.
Check below which team roles we are looking to fill and their respective forms. If you believe you fit more than one role, apply to them all!
Disclaimers:
Pantheon of the Discarded is a non-profit passion project. There is no remuneration involved in the development of this fangame.
The Wandering Makers will not tolerate bigotry, leaking, or any form of disreputable behavior or public unethical activity for team members within the development environment. In order to uphold this, we may perform background checks on applicants' social media presence.
The Wandering Makers reserve the right to utilize your submitted works exclusively for private evaluation, and will not use them in current or future projects nor disclose them to public view. Exceptions will be thoroughly discussed with respective authors, if applied.
CONCEPT DESIGN
Visual art to explore and solidify designs, fundament spritework, and improve upon ideas. We especially welcome 3D models and/or promotional artwork for our accounts, but it's not a requirement.
SPRITEWORK
Static or animated pixel sprites for characters, backgrounds & environments, tilesets, UI, VFX, or what more. We also value 3D models, as well as the ability to reproduce other pixel art styles (namely DELTARUNE's).
WRITING
Lore and narrative details - entails writing and revising scripts and ideas with directors as well as proposing some of your own. We appreciate an understanding of Toby's writing, but WM also values different angles into writing a story.
COMPOSING & MIXING
Assembly of the game's soundtrack and SFX, either mixing songs and/or sounds, or actively helping with them. We value both reproducing Toby's style of composition and blending your own style into the mix.
PROGRAMMING
Construction of the game's code with implementation of scripts, sprites, and songs, as well as assembling cutscenes, attacks, and gameplay features. Pantheon of the Discarded is developed in the Kristal engine with the Lua programming language. We want to install a strong coding foundation for the game, and are open to any and all direct help.
24 notes
·
View notes
Text
links to websites that might particularly interest you and tickle your fancy
do you like websites cuz I do
histoire3d.siggraph.org | Website dedicated to documenting the history of French 3D graphics/CGI
thomthomthom.com | Radiohead fansite that’s been up since 1999
citizeninsane.eu | Radiohead fansite that’s been up since 2006. Pretty much a definitive source for all things Radiohead and Radiohead related
radiox.ru | Radiohead fansite that’s been up since 2001. primarily geared towards Russian Radiohead fans, but still a good resource of media nonetheless
radiohead1.tripod.com | Radiohead fanpage that has all sorts of graphics from The Bends - Kid A. i’ve had this one laying around for so long I even remember sending it to my favourite web graphic blog lol
livenirvana.com | Nirvana fansite that’s been up since 2000. Dedicated to cataloging as much historical media as possible
streetphotographymagazine.com/dan-ginn | Specific webpage for a interview with a photographer who I enjoy the work of. feel free to explore the entire site though
moonconnection.com | Website all about the moon and its planetary science. Includes a neat widget you can add to your website
mgmtforum.com | Archive of the old MGMT forum all the way from 2009
mysterydisease.co.vu | Older archived cache of my favorite MGMT blog (check out @/mysterydisease)
wipp.energy.gov | 1993 Sandia report that covers nuclear semiotics in depth. it’s 351 pages long but if you’re not into technical nerd shit then skip to page 150 for various illustrations
cari.institute | Website that covers the conception and hallmarks of various aesthetics. Many pictures/examples included
philbrown.bc.ca | Amazingly designed and animated flash website about director Phil Brown. seriously so much to explore here there’s probably hours worth of details and information to scan over
webdesignmuseum.org | Self explanatory
libraryofbabel.info | Infinite library with randomly generated texts in each book. Based off of a story with the same name. You’ll mostly get gibberish but there’s a chance you can something coherent
canvasofbabel.com | Similar to its textual sibling but visual. Website features a 416x640 pixel canvas with each pixel being randomly generated. You’ll mostly get noise but there’s a chance you can get a fully formed image
semiconductorwave.com | hyperlink collecting that leads to even more websites. many of which you probably already know or would like to know
sbnation.com | Cool website about sports. woah.
rest of these websites are ones a good pal of mine sent so say thank you
lecontainer.blogspot.com | “pretty curated pictures and photography” - pal
steve-hemming.co.uk | Smashing Pumpkins dedicated fansite in a similar vein to Citizen Insane
velvetyne.fr | Free selection eclectic fonts! how wonderful
gifcities.org | I know you know this one
allscreencaps.com | Website for loads of film stills of a large variety of movies
fancaps.net | same as above
internet oddities/mysteries if you watch too much nexpo. note that many of these websites have things like flashing lights, sudden/loud sounds and (possibly) disturbing imagery
obsidiansnow.net | Click around to find out (it’s like some sort of strange puzzle thing iirc)
lhohq.info | Website consisting of multiple webpages of pure web design gore. It’s pretty hard to navigate. has themes of mind control and conspiracy theories. contains many leaks from wikileaks like the contact information of many politicians but please don’t contact any of them. site also features nudity so if you don’t like that, be careful
lomando.com | Classic point and click horror adventure game that used to be very popular. your favorite gaming youtubers have probably played it
yyyyyyy.info | Another website that messes with coding, taking web design to an absolute extreme. refresh for a new layout
visiteroda.com | Harry Styles ARG. yeah
forgottenlanguages.org | You won’t be able to understand 99% of this website but what you are able to read is quite fun
www.newmaterialwant.com | Generates a bunch of 3D models within each other at once. refresh for a different set
timecube.com | Absolute beauty of a conspiracy theory
housecreep.com | Dedicated to listing and explaining the history of stigmatized property. Haunted houses, murder houses, and other noteworthy places with interesting histories
14 notes
·
View notes
Text
so like . if i were to write the minecraft movie.
controversial but i wouldn't make it blocks - i would have it be 3d animated to be visibly low poly and pixelated but with really pretty shading. the greenery would be 2d but folded and wrapped around like paper, and it would sway as the characters clip through it.
it'd follow a sheltered princess (i'd name her jean) of an empire at the brink of collapse whose parents were just assassinated. the kingdom would be the classic forest biome and its subjugated territories would be all different peoples from different biomes. her best friend, her maid's daughter, would be from one of the territories, and it wouldn't be until after her parents died that the princess discovered her "best friend" was just being paid to be nice to her and resented her just as much as everyone else in the kingdom after their whole childhood of being treated as lesser and isolated from her colonized homeland.
she would turn to religion and then to academia for answers. the religion would have hints about being based on code and featuring a divine creator who wrote the code of the universe, opposed by an evil software bug that they're trying to do rituals to ward off.
the software bug is, to our main characters' dismay, a zombie apocalypse that no one managed to tell her about because the royal family was doing everything they could to only protect themselves and ignore everything that was happening (hence the assassination). our princess is dismayed by the weight of the bad deeds she inherited.
academia mostly arrived at the same conclusions as religion. our princess learns more of what the virus is doing to the world - what to her is textured actual grass is reduced to rigid, identical cubes. strange creatures spring out of the darkness and antagonize citizens. it's spreading everywhere.
she tries to help, but the situation is too far gone. it's spreading everywhere. the people don't trust her, for good reason. she can't do anything anyways.
palace academics were hired to transport the entirety of the home kingdom to somewhere new, somewhere empty, it's become dire enough that they're following their protocol and the princess is kidnapped back. the magic used is turning everything sick and red and on fire.
she escapes back to the dying world. it's too late, for everything. everythings reducing down into cubes. zombies are wandering everywhere and everyone is getting sick. over the course of the movie it's become more obvious that our protagonist is pregnant. she's beginning to fall ill as well.
she inspects the machinery used to teleport her home country for anywhere to safely have a baby in this hopeless world.
she has her child and places him in some kind of pod emanating magic. she tries to apologize to him, for being born into a dying world. she wishes he could live somewhere nicer, that he could rebuild it, she wishes he could have some kind of hope that she doesn't.
dazed and confused it becomes harder to tell what's going on. the machinery was leaking energy and she was somewhere unfamiliar, full of strange creatures, chained down by her guilt made physical. she's turning into a dragon as she's begging for peace.
back where she left her baby, the broken machinery is returning to the earth over the course of what may be hundreds of years. her baby remains safe in an orb of magic inside of which he's slowly growing up. until finally, the orb pops and drops him out.
minecraft steve wakes up in a new world. looks around. and punches a tree
11 notes
·
View notes
Text
putting aside the ethics of 'A.I' videos in their creation/usage/waste/economics, just on a purely technical level one thing i find interesting is no matter if the result looks photorealistic or like 3d CGI- it's all technically 2d image generation.
unless specifically used as an add on in a software for 3d rendering, of course, pretty much every ai video you see online is 2d art. the space rendered is a single plane, think of it like doing a digital painting on a single layer. the depth/perspective is an illusion that is frame by frame being rendered to the best ability of prediction based on data it has been fed.
obviously videos of 3d models in animation are a 2d file. like a pixar movie. but in video games you do have a fully rendered 3d character in a 3d rendered space, that's why glitches that clip through environments are so funny. it's efficient to have stock animations and interaction conditions programmed onto rigged dolls and sets.
by contrast if you were to use a generative ai in a similar context it would be real time animating a series of illustrations. of sounds and scenarios. the complexity required for narrative consistency and the human desire to fuck up restrictions hits up against a much more randomised set of programming. how would it deal with continuity of setting and personality? obviously chatbots already exist but as the fortnight darth vader debacle recently shows there are limits to slapping a skin on a stock chatbot rather than building one custom.
i just think that there's so many problems that come from trying to make an everything generator that don't exist in the mediums it is trying to usurp because those mediums have a built in problem solving process that is inherent to the tools and techniques that make them up.
but also also, very funny to see algorithmic 2D pixel generation being slapped with every label "this photo, this video, this 3d render" like it is at best description cgi, let's call it what it is.
but i could of course be wrong in my understanding of this technology, so feel free to correct me if you have better info, but my basic understanding of this tech is: binary code organised by -> human programming code to create -> computer software code that -> intakes information from data sets to output -> pixels and audio waveforms
9 notes
·
View notes
Note
I’m so impressed with how many styles you have and that you use them regularly (realistic, semi realistic, 2d, and 2d, 3d & pixel animation)! How did you learn to balance this many and get so good in all of them?
THANK YOUUUU this compliment means so much to me because so often i feel so worried I will stagnate since I basically like to draw the same subject matter over and over again 😳 but I do like to periodically try new things that I'll become invested in for chunks of time.
i guess advice more than just 'practice' is to be willing to try out new things that you have an interest in, even if it doesn't work out at first and is frustrating. you gotta be persistent to learn something new BUT if you get bored then just move on! if it sucks hit da bricks.... I really like this bjork quote abt creativity
idk throughout my life in art i just try to learn about stuff i'm interested in and practice what i wanna practice. like i wanted to get good at pixeling when i was like 14 so i kept practicing and trying new ways to go about it until i started to figure it out. same with digital painting when i was 15 and i just kept trying again and again until it clicked, even though i was frustrated a lot, i never actually lost the interest when i saw people's pretty paintings and that feeling of 'man i wish i could do that!'.... so i literally couldn't stop myself from trying over and over at painting. it goes beyond just drawing too. planet earth is fun because ANYTHING u are interested in you can try........ i make fursuit heads and other crafts to see if i can! this year i started making my own songs and also learned leather-working because i saw a cool craft and wanted to try :3
part of it is letting yourself age too because as you get older you will grow interested in new things. i am 27!! i've been drawing since i could hold a pencil. that's a long time to encounter a lot of stuff to get obsessed about and wanna try out for myself. SUCCESS TIP!: i typically pursue things that are adjacent to other skills i already have invested in, like drawing to 3d sculpture to digital modeling, or start blending them like sculpture + coding skills = 3d animation rigging. The reason is because a lot of these skills are transferable and make it easier to pick up. like a skill tree in a video game... and you'll end up in weird places like sculpture to sewing to leathercraft. It's nice to have creative hobbies you can be sorta be mediocre at without attaching your self worth to it, but other people still often find it impressive anyways because it's stuff they've never tried to do. It's really healing and easier to like what you create And yourself by extension when you're just having fun and learning without having to worry about the end product being "good". Anything you try is not a waste because you are learning new skills and more often than not, something you've learned is transferable to some other area of your life!!!!!!!!! nothing is ever a waste of time.
this is also the secret cure to art block btw well actually there are two secret cures. a) is you have to embrace the art block and go get obsessed with some other creative thing for a bit. either that or b) go absorb other people's creativity to a bit and watch some shows and read books or talk to people. c) is a mix of both. eventually you'll return to art again feeling fresh and motivated if you're willing to give it a few months. I think art block really just means you're bored and need a change of scenery one way or another 🤔 that's just my onion though
TL;DR have fun pursuing things just because you like them. as you keep doing it you'll just get better at it through practice whether you really intend to or not.
#answered asks#i don't know if this actually helps but here are my thoughts.#sorry for long answer. i tend to overexplain everything. and go on tangents. oopie
21 notes
·
View notes
Text
Looking for Group
Somebody posted on Discord
Does anybody want to collaborate on a [game] project?
but nobody answered.
Nobody said yes. Nobody said no. Nobody even asked follow-up questions. And yet, people in that server really do want to collaborate on games and projects. What happened?
Obviously nothing happened because the asker did not specify anything. What kind of project? With who? For how long? What should I bring to the table if we collaborate? I don't know. I was busy anyway. Maybe I can set up the asker with other people, who weren't busy. But this is not an isolated incident. Every day, thousands of people ask in chat rooms, forums, and mailing lists "Does anybody want to collaborate?"
Answering with yes is a risky move. Imagine being on the other side, and somebody asks an open-ended question... Imagine being on the other side of "I am having a software problem, can anybody DM me?"
Nobody wants to be on the hook to be somebody's personal tech support without at least knowing the kind of problem, and nobody wants to commit, even tentatively, to a creative project. It's kind of a red flag. What can you do to allow others to message you, to just tentatively get you to agree, to just agree to ask you for more details of your project? What should you do so people who say yes don't feel like they are wasting their own time, and yours?
1. Scope
The most important thing to communicate is scope. It's less important what kind of creative project it is, but how big. Is it an ongoing side project? A weekend? A couple of hours a week for a couple of months?
There is a world of difference between "Does anybody want to collaborate on a weekend project?" and "Does anybody want to collaborate on an epic story with 20 characters, multiple storylines, lore, 50 hours of side quests, and 800 pieces of unique loot?"
2. Stakes and Commitments
The next most important thing is commitments. This is doubly important if you are working with friends. Sometimes you want to collaborate on Ludum Dare, and if your partner is busy on that weekend, you'd rather know now. Sometimes you want to submit a demo of your game to some kind of competition or showcase, and it has to be ready at a certain point.
Sometimes you are really putting your heart and souls into a project, and your friend is just in it "for fun" and thinks you are ruining his fun by taking the project seriously. Your "One Story You Had Inside Yourself" can be your friend's "Learn C++ in 21 Days". Your "ticket into the glamorous games industry" can be your friend's "goof off with blender for a couple of hours and then try a different hobby".
It's important to talk out stakes and commitments with your friends, because you might be able to rope in a friend into a project without doing this. You could rope a friend into your project and he starts resenting you a bit because you are gung-ho about art, and your friend just wants to spend time with you, and you are exacting and controlling and ask him to revise the dialogue/animations/3D models he contributed.
If you are talking to strangers, you can't rope them in. They just won't agree to work with you without details.
3. Skills
If you are asking for collaborators in a programming discord, chances are you will get replies from other programmers. Chances are, wherever you ask, your post will be seen by many people who are good at the things you yourself are already good at. Are you a programmer looking for programmers, or a programmer looking for level designers and artists?
There are many reasons for three programmers or three pixel artists to work together, but by and large, you need people who complement your skill set, but fit into your work flow. If you are working with Unity3D, you probably want to work with 3D artists who have rudimentary knowledge of git and C#, even if they aren't supposed to code, and you need rudimentary knowledge of their modelling software and workflows.
So when looking for people to work with, you need to tell them what you can do, what you can't do, what you want them to do, and how you want to work together.
4. Topic/Idea/Design/Genre
This is point #4. This is deliberate.
You could probably take the previous 3 points and cobble together a "looking for group" post. People rarely do that. They usually have an idea they want to realise. Ideas are a dime a dozen though, and you can still pivot later, after you have found your group members.
It can't hurt to include this. What kind of project do you have in mind?
5. Management and Art Direction
There is one more big thing to consider: If you already have a project in mind, you are taking control of the project. You are the boss, you decide that you are looking for four people to collaborate on a science-based dragon breeding MMORPG, any four people who sign up know what they are getting into. It makes sense that the topic is not open for discussion. It also makes sense that you are the project manager, because you made a list of skills and work that needs to be done, and you have worked all this out already.
We are looping back to point #2 here. Why should people commit to your project if you are holding the reins? What do they get out of it?
You should communicate as early as possible what the creative freedoms are, what kind of tone you want to pursue, and how free your fellow artists are to express themselves.
In a commercial project, you can have control because you pay people. If you are doing a game jam project, or just any unpaid hobby collaboration, you should consider giving the others some creative freedom.
In a game jam, you could just decide that somebody else gets the creative control when you pivot to a different idea. In a large, commercial project, it makes sense to delineate how much creative freedom an individual artist has. In an open-source project, the maintainer can just review a patch and decide not to use it.
Ideally, you should communicate early on how weird or wacky you want the result to be, whether you want something with broad commercial appeal, with a sombre and serious tone, or if anything goes. That would be a bit much for the initial post, so just give a hint whether this would be a good project for somebody who really wants to put pigs and frogs in every game, or a good project who wants to make a character based on her ex boyfriend that the player can shoot in the groin. Sometimes people have the most specific ideas...
If on the other hand you have no idea what kind of creative direction you want to go, maybe you shouldn't go this route at all. If you want to give creative control to a yet to be determined team member, why not join another team instead? If you don't know where the project is going, you can't really plan who and what skills you need anyway.
Examples:
A good request for a collaoration reads a bit like a dating profile or a job ad. It covers the five points mentioned above.
Hey, I am Robert, art director and senior gameplay programmer at Blubberquark Software. I am fluent (among other languages) in Python, C#, Lua, and Haxe. I would like to join a team working with Unity3D, libGDX, löve or Flixel for the upcoming Ludum Dare game jam, in the Hamburg area. I like to use Blender, Gimp, Wings3D, ASEPrite, TrenchBroom, LDtk, Tiled, Ogmo, or Crocotile 3D. I also learned some 3DS Max and Cinema4D in university, but I don't have a license for those.
Here's a fictionalised version of myself, looking for a game jam team. To be clear, I am not looking for a team, but if I was, I'd make sure I don't need to learn a new set of tools for a weekend game jam. I'd try to make sure we all know how to use the engine, and we all know how to use the same source control, and we can all build and run a project before the jam starts. I wouldn't want to do a Ludum Dare remotely, so all this goes in there.
Since this is about Ludum Dare, scope and stakes are clear, and the skills I would use are in there. Skills that are irrelevant to Ludum Dare are not mentioned. Topic and creative control will depend on the jam theme, which is TBD.
Hello, we are Jim (programming) and Julius (level design, turn-based games expert). We are working on a fantasy JRPG called "animecha generica" that we hope to sell on Steam. We already have a gameplay prototype with placeholder characters and pixel art, but we would like to work with a skilled artist to create more interesting character designs and expressive/emotive portraits for the conversation system. If you join us, you would create characters, character portraits, quest lines, and dialogue, and we would split the revenue thee ways. We are also looking for a musician (work for hire basis).
This sounds like an early-stage commercial project. There is an engine and a prototype, but the design seems to depend on the content, and the developers are looking for somebody who can contribute the content. The scope sounds rather large (probably at least 5 hours of gameplay, maybe more) and the time commitment would be full-time until release. The artist they are looking for would do a little bit of everything, from art direction and narrative design down to art assets, and there would probably be a lot of overlap between the roles of two developers and the artist. Everybody wears multiple hats.
This sounds really risky, and the success of the project would depend on none of the three developers screwing it up.
Hi, I am Takeshi Kovacs, and I am making a new game engine based on Vulkan rendering, with its on scripting language, but optionally scripted in Python or C#. If this sounds interesting to you, I would like to work with you on a small game project of your choice, and help you realise your game design to test the viability of my Vladimir-and-Estragon Engine. Pick any weekend game jam of your choice. Pacific Time Zone only.
This seems low-pressure, and of limited scope. It could be a good after hours project, but it's probably not necessarily a good fit for a beginning programmer. You'd learn a new and unproven engine and scripting language. Apart from wasted time, it can't hurt that much to try. If you are a beginner, you could try to implement Pong or Tetris with Takeshi's help.
If you take up this offer, you would enjoy significant creative control, but the main objective would not be to produce a game for people to enjoy, but example code, or a game mechanics as a proof of concept for the engine.
We are making an open source shmup written in libGDX. We are always looking for new contributors. We have 100 stars on GitHub, and 50 players, according to our analytics. For the next release, we would like to add new levels, new power-ups, more ships, more content. Play our game [here] or build it from source by [following] [these] [instructions] [(Outdated Wiki Page For Ubuntu 20.04)]. If you have experience with Steam Workshop, talk to us on [our Discord].
This project has a medium scope, semi-mature code base, and low time commitment. You could probably contribute some content, or a patch to the engine, and nobody would really rely in you to stick around. On the other hand, you have little influence on the overall game design. You could certainly try: You could make a pull request that completely re-vamps the gameplay, but at that point, you might as well start a hostile fork.
We at secret studio are making otome dating simulator. Want to have demo ready for PAX Moonbase. We are looking for multiple character artists who can draw our characters on-model on a work-for-hire basis, and two additional writers for our writing team. We are looking for candidates who have experience with authoring systems like twine, ink, Ren'Py, Visual Novel Maker, or RPG Maker. Experience with YarnSpinner is a plus, but not required. You have the opportunity to design your own otome love interests and story lines. You will be expected to work under our creative director.
Like the JRPG example above, this is a commercial project with a large scope and fixed design, but these people are looking to hire more people who wear fewer hats each to create content quickly. This looks like a job ad for a paid position. It should be! You would have some creative freedom, but since this is a commercial project, you will have to stick with the marketing demographics and write romance storylines for girls who like boys, and any ideas you want to convey have to fit into that framework. It looks like they are using YarnSpinner and an undisclosed game engine, and they are willing to teach you how to use their tools on the job, but they seems to expect a writing background, and some prior experience in the tools/workflow/production side of visual novels specifically.
Hi. My name is Jeff. I work in theatre and I produce radio plays. I have podcasting and sound recording equipment at work. I play the guitar, badly, and I can borrow an old Moog synthesiser. I want to collaborate on a game project, by producing foley sound effects, or recording short stings and jingles. I know some QBasic from back in the day, but I haven't programmed much since then. I have licenses for Ableton, Photoshop, and Autodesk Maya.
Jeff is looking for a group. Jeff is not looking for a big commitment. He is willing to help a project out. Jeff has listed some skills and things he could contribute to a project. He is not looking for a new full-time job, but maybe a paid side gig.
Hi. I am Raven Siege Tank Banshee Medivac, a sophomore student majoring in computer science and underwater basket weaving at New England University, Arkham. I can use Blender, Photoshop, and and Logic Pro. I would like to help out with an open-source game project. I would also consider doing a puzzle platformer together. I know some PyGame.
There is almost but not quite enough to go on in this one. In what capacity would Raven work in a collaboration? What kind of scope is right, here? Maybe Raven would like to work on that shmup written in Java, but as far as the puzzle platformer is concerned, we don't know why Raven can't just make it solo with PyGame and Photoshop.
TL;DR
If you want to find people to work together with, you must communicate scope, commitments, and skills you need and skills you bring to the table. Explaining what kind of idea you want realised is also important, as is creative direction, but not as important as the first three. Your post should look like a job ad. Read your post and think if you would join that project or ask that person to join yours.
37 notes
·
View notes
Note
Hello!
Your creative coding artwork is intriguing! If it’s okay, can you explain the process of how you create them?
Hellos, yeah sure. They're matrices, or grids if you will, each cell of the grid has a color value, or a texture a pixelated image, you have your instances of the grid, you're going to want to control how these instances appear, if you have just solid colors like red, gren and blue, then you have three instances being use in your grid, you will need to create some variables and rules to control how they are layout out, if you utilize a circular gradient for example, your going to map your instances to the color values of this gradient its the simples rule I can think of right now, so if you have three instance they are going to appear based on the numeric values of the gradient 0 being black 1 being white and every value between, so in other words you will make a gradient of your instances, you will also want a black solid instance to represent the literal black parts of the gradient, I always use animated noises, theres lots of formulas for the noises out there, if you prefer you can also load in a video file instead of creating the noise in the code itself. the rest is just stylistic choices and extra movement, I load a lot of teture and some animated texture too, so I animate some pixelated texture in photoshop and I clone them in the grid, its like making a mosaic, after that there are a few animation things for the glitchness of it, like blinking instances, changing their rotation values rapidly, some dithering. its a little cumbersome to make it in Processing but you can use Touchdesigner there's more tutorials on creating matrix grids and cloning stuff into them, its also a little easier to create noises in too, and touchdesigner has a free version with a single limitation of only exporting artwork in 1080x1080, touchdesigner is simpler coding with blueprints instead of typing. you can use a 3D package as well since the logic is pretty much the same, creating a grid of clones -> control the instances layout with something, and some 3D packages have access to python in it so you can create your specific system or effectors and such.
9 notes
·
View notes
Note
Hi! First of all, I'd like to thank you for making such a great little game. I absolutely love the concept of being the boss of a souls-like game and having to deal with a very determined, at first pathetically weak, constantly respawning player who just does not want to let go. I found many different elements in your game quite inspiring and wanted to ask a few (actually, many) questions about your general game development process, since my dream is to at some point create a small game that I could say with full certainty I poured my heart into and call mine. I did read all your devlogs I could find, yet I'm still curious for more. I apologize for the amount of words that will follow in advance.
For context: I have some programming experience in Unity (though only of a 3D game) and can do art adequately, although I've never tried doing stuff like pixel art, UI or sprite animation, so those concepts are quite foreign to me.
Regarding programming, how did you make the AI able to perfectly dodge your every attack to the point it gets annoying (besides obvious input-reading, that little shit)? What was the hardest thing for you to program that maybe you thought was never going to work and how did you approach overcoming those obstacles? And to flip it around, what were the *easiest* parts for you to program? Overall, how long did each part of the development process (art, writing, coding, music, etc.) take and what did you change most often? Also, what would you say about the experience of creating a game in Godot? I'd be interested in making a 2D game in it, rather than Unity, I think.
Regarding art, do you have some tips for sprite animation or animation techniques you've used to make it easier and to make it look good? What made you decide to settle on a pixel artstyle for this game? Would you recommend something for starting out in pixel art and sprite animation in general? Also, do you use some program specifically dedicated to creating pixel art? I'm *also* generally curious about the creation of your own assets for a 2D game, like UI and backgrounds or various objects in the scene, and making them all coherent visually (that particularly applies to UI work as I find the idea of creating a nice-looking UI quite difficult). I wonder, how many separate assets does the Queen's throne room consist of? Or is it all mostly a single drawing? I've never tried doing that before and would very much like to draw all of the assets for my game myself.
And regarding writing, what was your process for thinking up character dialogue and creating the 'voice' for the Queen and the Hero? I've seen you mention many rewrites and had to wonder just what was being changed the most. Was it the word choice, improving sentence flow, changing the overall story? Did you find it difficult to come up with what the characters should say? I enjoy writing some small things myself, though it never really turns into anything finished and is more of an assortment of half-started ideas and mostly just fun writing study for me in the end, and I'm always curious how writers manage to create interesting dialogue between characters.
I liked the fact you also made your own music for the game. I've been slowly trying to wrap my head around music theory recently with the goal of making one track for my game that I'd be happy enough with, so I know how tough it is to make something sound good without much know-how, lol. I enjoyed the music you made and it makes the game even more special knowing just how much effort was put into it.
Lastly and most importantly, what kept you going to eventually finish the game, since that is a point many games never even get to meet? Was it that you enjoyed the concept so much and wanted to see it until the very end or was it maybe a feeling it will all go to waste if you don't see it through? Both?
---
I apologize for the amount of questions! If I could, I'd just open up your head and peek inside to get the answers, but alas I cannot, lmao. Please don't feel obligated to answer everything if it's too much. I'll be happy to learn whatever more you share about the process behind this game.
Really, it's one of those games that will get stuck in my head and I'll think about from time to time despite it being so short, and I'd say that's a great achievement! So once again thank you for making it, haha.
Hello, and thank you for activating my trap card! I've got so much Mortholme info ready to go, your excellent questions have prompted a write-up long enough that I'm turning it into a sort of post-mortem blog post. Just a moment!
16 notes
·
View notes
Note
I wonder if Rigel would be interested in ASCI or pixel art, since he says he probably couldn't do raster art. Also I was wondering if both of them have any interest in making music! I catch Rigel (Ukagaka) singing sometimes (are those from real existing songs btw?) and I think I've seen a doodle you made of Vega singing.
yeah I can see Rigel and Vega both cooperate on making ASCII stuff! Vega could help out with code to make little animations in a terminal too
Rigel on his own may be fairly proficient with vector art, and it's not like raster is completely out of his grasp either. he certainly Thinks he cannot do it because it requires human hand movements but he forgets that being in a 3d space means nothing stops them from figuring out how to actually Do Input into a painting program
music creation outright isn't something I considered before, but I can see Vega playing around to create drumlines
and yes the lyrics Rigel cites in the ukagaka are real songs! they're all the few songs that actually have lyrics in my playlist for him
18 notes
·
View notes
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:
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:
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:
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.
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.
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:
::_:: 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)
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:
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.
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:
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.
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.
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 _
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.
18 notes
·
View notes
Text
About Me
Hello there! I'm Jacob, a 2nd year student at QUT doing a double degree in Bachelor of Science/Bachelor of Games and Interactive Environments. Specifically, my majors are Physics and Software Technologies.
Hobbies & Interests
I love playing games! Some of my favourites are Resident Evil (4, 7, & 8), Tekken, Genshin Impact, Terraria, Minecraft, and Wuthering Waves. I love games that encourage creativity and those that challenge you to improve skills. I also love the narratives embedded into games as you feel transported into a different world.
I love programming, the ability to control outcomes with only a few lines of code really fascinates me. Especially with applying these skills in game development, giving life to the characters and objects in a virtual environment always seemed fun to me.
I also love creating art, although I'm still trying my best to improve. 3D modelling and pixel-art are my two most favourite genres when it comes to art.
I would also love to learn animation as bringing inanimate objects to life seems so fun and interesting.
Why I chose this Degree
I was first planning to take a single degree in Science. However, as I was scrolling through courses in QUT (the university I really wanted to study in), I saw this double degree program for both Science and Games. Without hesitation, I applied for this program. So far, I have been enjoying the degree as I have learned a variety of skills.
2 notes
·
View notes
Text
@erinbrume Yeah! Actually, some 2D objects in a 3D world.
I want to imitate the aesthetic of Roller Coaster Tycoon, so I was originally making the game entirely 2D, but I changed in this year because
(1) I'm getting better at 3D modeling and animation, and decided to play to my strengths (while still leaving a few things 2D to give me practice on pixel art)
(2) I discovered 2D isometric kind of became a big hassle to code, since elevation and both x and y map coordinates all affect which images are in front of others (in theory, that's doable, but I think I made a lot of choices with this game in particular that made it hard, like characters being able to hide under taller foliage)
I realized that since the game is effectively pretending to be 3D (like RCT is with pre-rendered assets), the code would be easier if it were actually 3D—I don't have the same hardware limitations that the 1990's did, and it turns out it's not hard in Unity to make things look pixelated and mix 2D assets into the world.
3 notes
·
View notes
Text
Super Famicom - DOOM
Title: DOOM / ドゥーム
Developer: id Software / Sculptured Software Inc. / Williams Entertainment Inc. (Midway Home Entertainment)
Publisher: Imagineer
Release date: 1 March 1996
Catalogue Code: SHVC-AD8J-JPN
Genre: First Person Shooter
I recently found my way to play Doom on the Super Famicom after I decided to take a break from playing some PlayStation games. After playing the game's first two levels, I couldn't play it anymore. It was actually giving me motion sickness; stress headache and all. I can appreciate what Sculptured Software, specifically Ray Landers, was going for when they endeavored to develop a Super Famicom port of Doom. It's an interesting little piece of technology to show off to people curious about the Super FX chip the console uses to generate 3D graphics. They built it all on top of a custom engine dubbed the "Reality Engine". The novelty of playing Doom on the Super Famicom is an interesting one and the instrumentation of the background music is quite good. Also, this console port of the game contains every level and enemy from the PC original. Something I can't say about the Atari Jaguar and Sega 32X versions. There are just so many concessions it doesn't seem to have a point to it.
The main problem is that it just feels incomplete somehow. According to many publications on this port of Doom, it contains every level from the PC original and they are all faithfully recreated. A look at the first two levels of the game basically moots this point. While the levels might be faithful in the respect that the physical rooms might be present, lots of things like walls and other aesthetic elements have been removed. In addition to this, there are no floor or ceiling textures and while this might not seem like a big deal it goes a long way to making the game look ugly and unfinished. Enemies can only look in one direction eliminating the hilarity of monster infighting. The worst thing about the enemy sprites though is the way they scale. When they are a few feet away from you enemies become a mess of pixels moving around the screen occasionally firing a potshot at you without changing their animation cycle. It's ugly.
This scaling problem extends to everything in the game, including wall and door textures. As soon as you move away from something, it loses detail and becomes a shifting, ill-defined blob. The scaling is really harsh, and it not only looks really, really ugly but it actually made me feel motion-sick after playing for a little while. The frame rate is also very low, making Doomguy feel like an 80-year-old arthritis sufferer. This is the final nail in the coffin. The game is ugly and unrefined and then the frame rate turns out to be abysmal as well. It renders the game not unplayable, just not fun. It's slow and ugly.
To sum up, Doom on the Super Famicom feels unrefined and unfinished. So, what if it contains every level from the original Doom? That means nothing while it is busy being slow, ugly, and exasperating. It is not fun to play and actively hurts you while you are doing it. There are very few redeeming features to be found with this port of one of the most important games ever made. The Super Famicom might have a huge library of great games, but this definitely isn't one of them. If you want to play Doom, there are already a plethora of modern solutions to choose from. Speaking from the perspective of cartridge versions though I would have to recommend you go for the Sega 32X version or even possibly the Atari Jaguar version. Yeah, the Sega 32X version has harsh music and lacks the BFG-9000 during normal play and has certain levels taken out, and the Atari Jaguar version has no music during play and also has levels taken out owing to the meager 2-megabit sized cartridge, but you'd get a far better game as a result.
youtube
4 notes
·
View notes
Text



ORACLE OF AGES MY BELOVED!!! Mwah mwah I love you so much OoA you were so silly and fun and charming. If only there was a third game about Farore since she's my favorite golden goddess!!! Oh well, at least we have two fun Oracle games and at least Farore is in both.
The images are printed screenshots from the game I found online!
Writing typed below:
Rating: 8.5 Played: Fa 2022 Port: 3DS (GBC Version)
Comments
Feels older than ALTTP
Great reach with sword, better than ALTTP
the screen scrolling caught me off guard
why is the tree in love with Link T-T
let me see Farore!!!!!
loved L-1 boss!
omg riding on the animals <3 love you Moosh
the puzzles are unique but very Zelda like
some similarities to the minish cap
you really need to unlearn everything you know about Zelda to play each game -> potions and fairies are switched in this game
the man's ceremony is gonna make me lose my mind
love the return of the gorons
the gorons all dance, just like smth I believe each Zelda race does
the Ghini are back ahhhhh
mermaid link!! so cute
baby Jabu Jabu!!
very experimental with play styles, I love it!
LYNELS?????
koji kondo killed it as usual
pixel art is 10/10
I like collecting the relics for L-8
omg both types of zora exist I absolutely adore that
omg a little statue of LInk <3
love the skeleton pirates
LINK TEACHING RALPH SO CUTE!!
final boss wasn't too bad, I liked dark link and her final forms (veran)
My holodrum code
Summary:
What a unique game. The whole concept was super cute and I am surprised the oracle games aren't that popular. There are many aspects inspired by OOT and MM such as the Hand in the toiled and some of the enemies but it definitely takes even more inspo from the 2d games. There's a lot of similarities between this game and the Minish cap! It was super cute and it really felt like they let the developers explore silly ideas. For one, they included both river and ocean Zora which I believe is one of the only games to do so. It also has bonus content if you play its sister game, seasons. The dungeons had a good difficulty to them and the bosses and mini had really cool designs - honestly designs you probably wouldn't see in any other game. There was also a good amount of down time content for when you aren't in the dungeons with really fun scenery and characters. Speaking of, the character designs were super cute and unique since they a different pixel art style! (Before I knew this was inspired by Link's Awakening). I highly recommend this game to anyone with a 3DS (rip you can't get it anymore). It is absolutely worth it. A Zelda fan must!!
#journalsouppe#bullet journal#journal#tloz#legend of zelda#loz#the legend of zelda#Zelda journal#oracle of ages#nayru#loz nayru
25 notes
·
View notes