Tumgik
#i forgot it had some of the same sound effects for the UI as 5 and 6 and it triggered some sort of fight or flight response in my brain ha
illdothehotvoice · 1 year
Text
I am finally picking up The Great Ace Attorney again! I missed the lawyer games qwq
4 notes · View notes
Text
making a pico8 game during my first week of RC
tl;dr - Play my first ever solo game right here!
Tumblr media
On my first day of Recurse, fellow W1 2017 batcher Ayla Myers (whose work you can peep here) presented on fantasy game consoles, PICO-8 in particular. Her presentation ran roughly 5 minutes, but it only took about half that time to convince me that I should give it a whirl. Since asking for help is more than encouraged here, I approached her immediately afterwards and asked if she could do a quick walkthrough of PICO-8 sometime.
“Yeah, of course. When do you want to start?”
“Uh…” It was already 6pm. “Tomorrow?”
“Okay!”
And lo, 11am the next day found myself and a handful of other Recursers sitting around a table in the Turing meeting room as Ayla showed us the ropes.
PICO-8 is a highly-opinionated, highly-constrained fantasy console with a robust set of tools for quickly developing and sharing games. While I’d played a few PICO-8 games before, I hadn’t realized just how core the commitment to retro-nostalgia is to the engine itself. Here are some fun things I learned about PICO-8:
It includes a pixel art editor and a chiptune mixer, both of which are a delight to use.
PICO-8 games can have 2 players, but each player only gets 6 possible inputs: four directional keys and two others (typically Z and X).
On the programming side, developers are allowed a maximum of ~8k tokens and ~65k characters. This incentivizes some extreme optimization, overloading, and other tricks in larger games that near those limits.
The games are super easy to export and share, either as embeddable HTML and JS or as downloadable executables.
As someone who has shipped dozens of games professionally but has never personally programmed one from start to finish, I decided that it’d be a good exercise to build one during the remaining 4 days of the first week.
On programming in a new language.
PICO-8 uses a subset of Lua, which I’ve never read or written before. Under other circumstances, I probably would have preemptively given up and shied away from using a tool that required learning a new language. Fortunately, my current circumstances are “you are entirely here to learn new things and surrounded by people who can help, actually” so I waved off the anxiety and plunged ahead instead.
Turns out that Lua felt very similar to other game programming I’d done in the past, so there wasn’t any need to worry anyway! (One begins to suspect that there is rarely a ‘need’ to worry… 🤔)
There were a few things that stood out in particular as I built my game.
First, to handle animations - like bobbing a sprite or moving UI elements on and off screen - I found myself repeating a pattern using a counter (incremented every update loop) and a maximum (resetting the counter to 0 when it reached this value). I wasn’t sure if a series of timers would be a better fit for cycling through animation states, especially since this pattern meant assigning at least two tokens per animation. Since I was focused on building this quickly and wasn’t worried about running up against the token limit, however, I figured that consistently using a single pattern that I knew worked was the way to go.
Example of the section of the bat’s update loop that flaps her wings up and down and plays a quick beat on each flap:
Tumblr media
Second, I learned that tables are “the only data structuring mechanism” in Lua, and that there is no readily available method to query them about the number of items they’re holding. To solve this, I tracked the count of items as a separate variable and updated the count any time I was adding or removing items from the table. If I were pinched for tokens I’d probably handle this differently, likely by writing a separate function that iterates over the the items in the table and returns the count.
Tumblr media
Lastly, and this one was a pleasure to discover, Lua is perfectly a-okay with removing items from a table while iterating over items within that table. For example, during the update loop I want to iterate over each of the moths in the game and check if the bat is in a position to eat them. If the bat should eat the moth, I want to add a quick sound effect, draw some bug-gut splatter to the screen, and remove the moth from the moths table.
I can do all of that like this:
Tumblr media
This was a big relief to me because I’ve had trouble doing the same with JavaScript in the past!
On finding relief in constraints and designing a tiny game.
I didn’t have a strong idea when I first started making Sonar, other than that I should be able to finish it in a few days and that it should be about animals. Certainly my appreciation for earth’s non-human lifeforms would stave off any temptation to jump ship if things got confusing or tedious. 🦇
There was a brief moment where I sat, staring at my laptop screen, wondering what I could even do with only two non-directional inputs. It took about five minutes for me to come to my senses. What if this constraint, much like the constraint on tokens or audio channels, was a blessing? “Wow, I’m so glad I only have two buttons to work with,” I told myself, found it to be true. “In fact, let’s start by using only one of those buttons.”
Changing your perspective sure is a time-efficient way to clear obstacles!
On making art and SFX.
While I’d done some game programming (though never a complete solo project), I’d certainly never done game art or audio. In fact, art and audio often felt more intimidating than the rest of the design or development. I didn’t really know anything about creating reasonable looking pixel art or have any kind of background in creating music or sound effects; I just knew that both were important to making a game feel whole.
Once again, PICO-8 provided seamless introduction to these areas of game development. With only 16-colors and 8x8 pixels to worth of space to work with, I never got stuck trying to pick the perfect colors or shape for a sprite. If it worked, it worked, and it only took a matter of seconds to make changes and see them live in the game.
Tumblr media
As someone who has zero musical education the responsibility of creating audio made me more than a little apprehensive, but I found the SFX editor similarly quick to learn and pleasant to use. I stopped short of making any ambient music, but I did make a few sounds: a steady but muffled bassline for the bat’s wings flapping, a high-pitched chirp for the echolocation, a gulp for a bug being swallowed, and a confirmation bloop for starting the game. SFX are necessary for giving a non-haptic game the illusion of tactile feedback, and even just these few simple, two-note sounds do a lot of heavy-lifting in making the game feel more responsive.
On jamming fast, alone, in an environment geared towards collaboration.
The single biggest struggle I had while working on this project was worrying if I should be spending my time doing something else. Whenever I spent large chunks of time coding alone, rather than pairing or attending study groups, I couldn’t help but feel like perhaps I was missing the forest for the trees. Shouldn’t the first week be about learning as much as possible about my peers and their interests, in the spirit of future collaboration? Did I somehow find a way to ‘do it wrong?’
Hard to say, what with only one week’s worth of information! My current guess, however, is no. I became familiar with a new language, I learned a new toolset, and I finished a project that I feel at least remotely comfortable showing to other people. Those are pretty solid accomplishments, even in the face of a gnawing suspicion otherwise!
More importantly though, I practiced being comfortable following my own intuition of what an ideal first week might look like. I proved to myself that I could set my own goals and meet them. I also developed a general feel for the ebbs and flows of working with myself as sole author and stakeholder on a project. I’m sure this kind of self-knowledge is valuable at any level, but as a beginner it feels like an especially worthwhile point of reference.
Besides, this was all made possible because I was inspired by a fellow Recurser, asked them for help and got it. 
How could that be wrong? 😊
You can play Sonar right here.
ps. I almost forgot something funny!
This is one of the first things that happened when I began animating my pixel bat:
Tumblr media
I laughed at this for a solid minute. It was wonderful, and only more so because I had spent the previous two hours setting up new software, familiarizing myself with basic Lua syntax, and fretting over whether my pixel art would be at all legible.
As one of my friends commented, “OH NO, HIS FLAPS FELL OFF!” And then, “or HER flaps, excuse me.”
Making games is generally time-consuming, tedious, detail-oriented work. On the bright side, many of the bugs and SNAFUs you run into are just silly as heck. The moments where ish goes off the rails can provide exactly the right dose of harmless humor to revitalize your motivation to finish. 👑
edit (11/15/2017)
Once again going above and beyond in her helpfulness, Ayla informs me that you totally can get the length of a list in PICO-8!
Here’s how, using the # operator:
local some_list = {32, 4, 72} print(#some_list) -- prints 3
✌️🦇
edit (11/17/2017)
So probably it makes sense to link to the the code, since becoming a better programmer is the whole gosh darn point! 😑
Also, because it may be helpful, I want to provide a quick outline of how you might also crank out a small game in a narrow window of time:
day1 - purchase and install pico8 (if you’re at RC, talk to someone about using their license!) - install a lua linter on your text editor of choice - run pico8 in console mode, so u can use printh to debug - make a player character that responds to input - make a 2-state animation for that player character (eg. flip between two sprites, add some bobbing motion, etc) - get ppl to Play Your Game!
day2 - make an enemy (note that these could also just be Collectable Objects if u aint feeling like defaulting to violence ✨) - make a 2-state animation for that enemy - give that enemy some passive behavior - disappear the enemy conditionally (eg. touched by player, hit by bullet) - make another enemy with similar but more challenging behavior - get ppl to Play Your Game!
day3 - add an end-condition (eg. eating some amount of bugs) - add SFX. this is more important than music for making your game feel whole, and you can do just about everything you need to with 2 note blips - add UI elements (eg. health bar, bullets left, etc) - add a start screen - add an end screen - get ppl to Play Your Game!
day4 - add finishing touches - export your game as html from PICO8 - host somewhere, like itch.io - write a blog post!! - share with your friends and the rest-o the world
2 notes · View notes
osakasshitpit · 4 years
Text
My adventures with my PS4 and Night City
Here is what nobody asked for, my thoughts on Cyberpunk 2077.
Well well well. This certainly is a hot button topic right now. The game’s out, everyone is playing it and a fuck ton of people are complaining about it. Me as well. Playing it I mean, I spend the majority of this weekend playing it, actually, and I haven’t lost a word about it online. Full disclosure, I am playing on PS4 because I don’t have a PC that can handle it, let alone a PS5 (those fucking things are almost as rare these times as graphics cards, swear to god). I also could not play right on launch day, for a whole bunch of reasons. First, my Tabletop RPG group plays Thursdays and I’m the game master, so I can’t just drop off of the face of the earth and play Cyberpunk. I know, what a fucking nerd I am. Anyways, if that wasn’t enough, the fucking delivery service was fucking with me. My package didn’t get delivered on Thursday, for unknown reasons. Friday, it was finally due to arrive, but the mailman just didn’t think he should deliver my package. I only found out through tracking that he apparently was there and I wasn’t, despite the fact I was. Fuck that guy. I went to the post office to complain later. It turns out due to the ‘rona and the game being rated for mature audiences only, they could not deliver my package and I indeed had to pick it up from the post office, so I could verify I am of age. Usually, when this sort of thing happens and you gotta pick it up, earliest date you can pick it up is the next day, 10am... which would’ve been Saturday. Luckily for me, I was able to pick it up on Friday, despite the fact I shouldn’t be able to. Well, lucky me I guess. After coming home from work, I put the game in the console and had to wait pretty much the entire rest of the day for the fucking thing to install and patch, so that was a fucking bitch and a half. I played
After all that, I was finally able to at least make a character and play through the tutorial before going to bed.
Saturday and onward, I played roughly 20 hours, I got through the game’s story a bit and did a looooooooooot of side jobs. I played most of that time on version 1.04, the tutorial was on version 1.02.
So after explaining my situation, here are my thoughts.
The short version is, it’s a really good game that is sadly a little rough around the edges.
The long version... weeeeelll.
The game, even on PS4 with admittedly low graphics settings (the game was just not made for the thing and it shows from time to time), can look incredible. Most of that is in the lighting. By night, the city is glowing in this harsh neon tone I simply adore. By day, the city is bright and shiny, like polished chrome. The back alleys are dark, dingy and littered with trash. The city is like a maze made out of roads, alleys and underground walkways. The atmosphere this game has is what I expected and what I wanted, so A+ in that department. They also did an excellent job on the motion capture. When it comes to open world games, I’m pretty used to the shit bethesda sells you, so I was very very happy to see all the characters you meet move and emote like that. There were some rough spots, especially with everyone's favorite sleep paralysis demon Johnny, but over all the animation quality is top notch. It wasn’t all sunshine and rainbows, though. The texture quality is pretty low, at least on the environment (I think the quality on the characters is pretty okay for PS4). It is noticeable in many areas, but I guess I’m okay with that. I kinda wished the environments had better texture quality but I guess it’s a small prize to pay. What was kind of distracting for me was the visual glitches I encountered. They were not as frequent as many made them out to be, but when they occurred it was very noticeable. Bodies clipping and getting stuck in geometry, being violently distorted as they are trying to get unstuck to the ground I probably propelled them into with a shotgun blast. Things flickering in and out of existence in the distance. Light effects flickering from time to time. And of course, the odd model being rendered in low-res before blending into the high-res model. The later seems to be a major gripe for many a people, but I had this happen like, maybe 10 times? At least I actively noticed it like 10 times. It usually only took about a second or two until the game caught up. It mostly happened when I took a motorcycle to get around. After going like 200 km/h and stopping at my destination, the game sometimes took a few seconds to catch up and render the area properly and granted, it’s a bit of an annoyance but well, it happened rarely enough to bother me. My theory on why this happens is it probably has something to do with how the engine (which is the latest version of their own proprietary engine, the RedEngine) handles Level of Detail. To explain, in short, level of detail is when a game uses lower resolution models and textures for objects that are far away. They look like shit because they are not meant to be seen up close. They are meant to be seen from a great distance. At a far distance, it doesn’t matter if that model has 10000 polygons or 5, because all you see is a few pixels in the vague shape of something. Its a neat trick engines use to render more on screen without using much more power, and everyone is using it. If you have played Breath of the Wild, you might have seen this when you zoom in really close with your shieka slate towards something like a shire or a building that is far away. Anyways, my theory is that due to the way the engine handles this, the game gets confused sometimes and it takes a bit until the high res model loads in, which is why you see low res models up close. It’s bad, but probably just a thing they need to patch out. I have to admit though, that I only played it on a 26 inch 1080p screen so people with larger screens might find these graphical shortcomings more distracting.
One thing I found rather annoying in regards to graphics is that sometimes UI elements take a while to load. This happens very inconsistently so I don’t know why this happens but it does suck.
I’ll be honest though and say what was important for me was less the graphics and more the gameplay, aesthetic/atmosphere and story. I already stated that I think the game delivers on the atmosphere and aesthetics, but what about the gameplay and story?
Well, it’s pretty good I’d say. Gun play is good, Cyberware is integrated well into the game, granting you new perks and abilities and the RPG Mechanics (while not being the most in depth and faithful to how the Pen and Paper Games worked) are also pretty fun to fuck around with. It works like this: You get Stat points you distribute to get bonuses to stuff and that allow you to do certain actions. Some things have a stat requirement to do, like breaking down doors or hacking into a device to collect paydata. There are also dialogue choices that have stat requirements. These are optional, but very helpful. I have to say though, it’s pretty easy to have a jack of all trades that can get past most of these things. You can see that as a positive thing or a negative thing. Outside of that, you have skills that improve when you use them. What that grants you is perk points you can freely distribute among the many, many perks you can acquire. These usually enable you to do some stuff or grand you a pretty nice bonus to something, like being able to carry a lot more shit, increasing reload speed for weapons or granting you a passive health regeneration in combat (which is pretty good). Also, pro tip, if you are playing a netrunner, get the perk that allows you to get RAM back during combat as quickly as possible. Shit is vital for you to be able to actively use your hacking abilities. Netrunning is another thing I liked. So here is the deal. There are two types of hacks: Breaching and Quick Hacks. Breaching is basically breaking into the enemies network and leaving behind malware that give you an advantage. These can be pretty strong and don’t cost you resources, but you have to do a minigame to activate the effects. How it works is that you have this grid with HEX Values. You have to hit a sequence of values to activate a malware. There was some in world explanation onto why, but I forgot. Anyways, You can chain these together to trigger multiple effects and if sequences have some overlap, you might be able to trigger multiple effects at the same time. The catch is, that you can only hit the values by going along the top most row, then the column of the value you hit first, then the row of the value you hit next, and so forth. It sounds more complicated than it is, really. As soon as you hit your first value, the timer starts ticking, so you are encouraged to first find an optimal path and then execute. It is a pretty fun and quick mini game that gives you just the right amount of challenge to make you feel like a hacker when you activate all the effects. I like it a lot. Other thing is quick hacks. These are just programs you can fire off that do any number of things. For devices like cameras, there are a set number of things you can do with a quick hack to manipulate it. I think these also tie into your hacking perks? Not sure. For people and enemies, you have programs you slot into your cyberdeck. These can do all matter of things, suited for stealth and combat. These are extremely useful for a lot of things, like blinding someone momentarily so you can steal stuff right in front of their noses, making their weapon jam so you can either run past someone or fight them without opposition, disabling their cyberware to weaken them, and plain just dealing damage. The promotional material made it sound like you have to play stealth to hack, but that's not the case at all. You can very easily specialize in shotguns or melee combat and hack your opponents to give you an edge in combat. I think it is more suited for stealth because hacking (as far as I got at least) is very focused on 1v1 encounters, but there are some things that affect a whole group of enemies, so you can still use netrunning pretty effectively in the thick of things.
The story is also pretty good. only played till chapter 2, but so far I like it. I can’t say too much and promotional material spoiled a few things about the first chapter but there were still some twists and turns I did not see coming, I’m excited to see where this goes. Outside of that, there are a lot of side missions in the game, which are also pretty good in my opinion. You don’t have dialogue choices that influence the outcome of every quest, but even the more linear quests are pretty enjoyable. At least they usually give you the ability to approach a quest your way. You can’t always solve things with words, but y’know, it is rare that you talk a gang into getting fucked over by you so it does make sense that sometimes, violence is your only way out. For those who want to play nice, there are non-lethal weapons and even guns can be made non-lethal with the right modifications. So, you can play as a pacifist, I guess. I don’t know if that does anything but there you go. What is pretty neat and sometimes challenging even, is that some quests require you to use non-lethal force. Be careful though, some quests can be failed by just walking away or doing them to late or missing dialogue options. If a dude comes to you and says he pays you to drive him somewhere RIGHT NOW, you have to get a car RIGHT NOW and drive him there. If you go away to get a car, the quest fails. I wish they told you that but I guess it makes sense. Thankfully, autosaves are usually pretty merciful and you rarely loose much progress. There was one quest that really fucked me over because apparently I didn’t talk through all the dialogue options when I should’ve. Without spoiling anything, you had to talk to a guy. After doing that, you can go to the guy who asked you to do that and get your reward, but the quest isn’t finished. If you didn’t do a thing before getting your reward, you will fail the quest down the line. You still get paid but... well, I guess you could say you get the bad end for the quest.
Sadly, Quests are also where my main issue with how the game is right now lies. There are some bugs that can render a quest objectives broken, or stuck in limbo. Some of these issues fix themselves after a while or after loading a save before the quest, but it sure as shit is annoying to do things twice because the fucking game wouldn’t let you finish the quest objective. This happened a few times for me. Two side quests got stuck in my quest log, with no quest objective. I think I even got the reward for the quest but the quest just wouldn’t register as finished. That sucks a lot. Twice or so I had to reload a save because I couldn’t progress in a quest because the game didn’t register me doing the objective. One time, during the main quest no less, I couldn’t fulfill the objective at all because the item I needed for that couldn’t be interacted with. That sucks and shouldn’t happen.
There are also the crashes. Thankfully, crashes only happened like 4 times for me in over 20 hours of playtime but still, it’s annoying.
Overall, I’d say Cyberpunk 2077 is a very good game that is plagued by some technical shortcomings, but it is very enjoyable despite all the flaws. I hope they fix these issues soon but by the look of things, they are hard at work on getting shit patched, which I can appreciate. It not as bad as some people make it out to be and it not a scam as some people have called it, it’s just another game that might have needed a bit more time in the oven.
0 notes