diegzumillo
|
|
« on: September 07, 2019, 03:09:00 PM » |
|
Disclaimer: I WILL FINISH APPLE AND WORM FIRST! I SWEAR TO GOD IF IT'S THE LAST THING I DO ON THIS LIFE. or not who gives a shit anyway.
Ahem. All right. This devlog will probably not go too far but this is from a tiny project I started while in my parents house with only a very weak laptop to work on. Probably doesn't deserve its own devlog but I felt I was abusing the Design subforum at this point.
Here's the elevator pitch for the project: Grid platformer 1, stealth, maybe movement between two layers, you have a projectile weapon that you need to recover before using again, making it possible to just leave it behind.
The final goal is to make a mega drive game. But first I wanted to prototype something in pico-8, since it's much easier to work with but also forces me to work with limitations, and things like screen partitioning etc. So I came up with a simple (hopefully) project, no fancy physics, no fancy effects. Just a shit ton of animation but let us not think about that for now.
This is almost certainly a short-lived project but I want to see how far I can take it before losing steam. For now I just want to have a quick prototype working in pico-8.
1: Flashback, Blackthorne, and possibly others. I think cinematic platformer is a dumb name and will never use it. Also, prince of persia and another world are surprisingly not stuck on a grid! But the spirit is the same.
|
|
« Last Edit: December 17, 2023, 07:49:07 PM by diegzumillo »
|
Logged
|
|
|
|
diegzumillo
|
|
« Reply #1 on: September 07, 2019, 03:37:39 PM » |
|
In the design subforum I was talking about how the angled camera is helpful to create the illusion the player is always standing on solid ground. This is simple enough to achieve. However, I am also experimenting with two layers of movement, and the extra art to account for every possibility of corners is saturating the acceptable complexity of the project. Specially for the quick prototype! The prototype will have none of this silliness camera angle, but I am thinking ahead a bit. If this will be a complication then I might as well kill it here now. Here's the setup to get all edges with both layers. If I choose to use front facing camera the character will have to be very smartly animated! Next to an edge the stance needs to be difference so a leg doesn't float. And the jump animation also need to be smartly made. Random thought: what if I use different jumping rules than the usual grid platformer? That is, you can jump only from the above floor if you are standing on plane a and there is an opening above with ground on plane b. And vice versa. Something to think while I work on this prototype.
|
|
|
Logged
|
|
|
|
diegzumillo
|
|
« Reply #2 on: September 07, 2019, 08:36:01 PM » |
|
How does one "bake animation" in old systems? I remember my struggles with this in my last attempt at a grid platformer. I used Godot and it was a huuuuuge pain in the ass. In my current pico8 prototype I'm happy with basic almost teleport movement, but if I wanted to get smooth movement I'm not sure how to proceed, and once I start working on the MD implementation I'm gonna have to deal with this. This is the old Godot implementation. I was doing linear interpolation of position, which looks half decent most of the time but some animations, like running against the wall, look really off. I remember giving up when I noticed this procedure was even less adequate on long jumps and all those more complex motions. I wish I could use these but I will likely remake them within more rigid constraints of sprite size and color palette, but it's the same character doing the same things. Maybe a simple tool (in python or or maybe an extension of some extendable pixel art maker) where I can move each frame and record its pixel displacement and read this sequence inside the engine. Baker of sprite pivot animation for mega drive. Catchy name. Maybe Autodesk can buy it.
|
|
|
Logged
|
|
|
|
Superb Joe
|
|
« Reply #3 on: September 08, 2019, 02:41:52 AM » |
|
i'm not sure i fully understand, but do you mean adjusting the offset/origin of sprite sequences to avoid the "sliding foot problem" and if running against a wall you get a sort of weird moonwalk effect? if you can live with slidy feet but not the wall issue and don't want to do too much work, maybe add a collision that disables the running animation when the player intersects with the non-solid background/foreground tiles that give the wall visual depth?
|
|
|
Logged
|
|
|
|
diegzumillo
|
|
« Reply #4 on: September 08, 2019, 04:26:31 AM » |
|
For walking it's simple, but this kind of game movement is more like board game than regular platformer. There is no collision detection in the usual sense. So you are running and there is a wall in the next 'cell' (game grid), so it switches to a different animation for running against the wall. Different frames and different total displacement.
At least that's how I'm choosing to think about this. I might be doing it the wrong way... Maybe I should treat this like a regular platformer with forced increments, at the risk of bugs causing a misalignment. I am totally accepting suggestions, I have no idea how this is done.
|
|
|
Logged
|
|
|
|
nova++
|
|
« Reply #5 on: September 08, 2019, 06:57:15 AM » |
|
So if I'm understanding this right, you're basically trying to treat the player as if they are on a grid, as per the name, such that if you were to, say, go left while on a tile with an empty space to the left, it plays one animation (moving freely from right to left), but if there is a wall to the left, it plays a different one (blocked by wall, or no animation)...?
I'm kinda confused.
|
|
|
Logged
|
|
|
|
diegzumillo
|
|
« Reply #6 on: September 08, 2019, 07:08:32 AM » |
|
Exactly! For someone confused you seem to have good grasp haha Here's Flashback for reference: https://youtu.be/CMXJBS6n44M?t=4756I was putting off creating a finite state machine, because it seemed relevant for animation only, but in this kind of game the movement is too intertwined with animation. I might have to work on one.
|
|
|
Logged
|
|
|
|
diegzumillo
|
|
« Reply #7 on: September 13, 2019, 05:32:08 PM » |
|
Four hundred million years later
aight.. I made a tool to do what I want. Let's just hope it's as useful as I thought it would be.
I still need to format the output code properly. Which means it's time to get back on the game itself and implement the movement, then come back to this program and format the code how I want.
Good time to mention the prototype in pico-8 is done. I didn't take it too far but far enough to discard the most risky ideas.
So this tool is made in Godot. I tried c++ with wxwidgets, I tried python, I tried java, nothing was simple enough that it wouldn't ultimately defeat the purpose. Godot is surprisingly useful for quick applications! The Godot editor itself was apparently made in Godot.
The next custom tool I'm gonna work on is a flowchart generator that outputs itself in code form. with allthe ifs elses that would take me a million years to do for the main character.
This project is not very promising. It's nothing original or too interesting but it's very fun!
|
|
|
Logged
|
|
|
|
diegzumillo
|
|
« Reply #8 on: September 14, 2019, 01:44:28 PM » |
|
Testing possible screen partitions. I have a character with lots of animations I could use but wasn't made with the Mega Drive restrictions in mind. With this character, a good size for each room level (level as in floors) is 8 tiles high. Any less than that and the ceiling looks too low. That gives me 3 floors per room/screen, which is fine, and it's what most cinematic platformers work with. But most of these games I'm citing focus on platform and very basic combat, while I'm focusing on stealth. With stealth in mind 3 floors seem low. Maybe. With a 6 tiles high floor, each screen holds four floors. The character is a little smaller but still readable and, even though I can't reuse the animations, it's much easier to animate a smaller sprite. My uncertainty suggests I should probably get back to my prototype before moving further. Then again this project isn't too ambitious anyway. It's gonna be a short game with few levels. Yeah, I'll just dive in!
|
|
|
Logged
|
|
|
|
diegzumillo
|
|
« Reply #9 on: September 17, 2019, 06:32:36 AM » |
|
Time to put this project to rest, yall! MD programming with SGDK has been fun. It's quite easy to work with, despite the difficulty in finding information outside the source code itself. But I feel like I got... whatever was driving this project... out of my system, and I lost interest. For now at least. The game idea itself was an excuse to get my feet wet in MD dev and that it did. If I ever have a more solid idea of where to take this project maybe I'll come back to it. I lie to myself a lot! I even worked on a prototype before.. why did I do that? (EDIT: christ I made a tool to animate sprite pivot in Godot! that took 3 days!) I wonder if I'm lying about putting this project to rest. Here is a dump of all ideas and progress, so when I get back, if ever, I know what I was thinking. Because god knows my memory is shit. At the end I discarded the idea of using the bottom of the screen for UI stuff and I got four levels, each with 7 tiles. I was in the process of translating my jungle concept art to tiles to be used in the game, and I'm quite surprised with the amount of memory available in the VDP. I played around with some environments but I didn't connect with any. Besides, my idea of making a stealth game requires less open wide areas and more closed dark environments. That initial jungle test (below) doesn't really fit well. Running on the emulator: I'm quite proud of this dialog box though! So I tried to come up with something more stealth appropriate Old dungeon with stone walls is boring me to death. Art is the most taxing thing for me to do. Either I have a vision that struggles to come out of my head, or I can't see anything interesting. It's very frustrating! In order to find more interesting environments I decided to make the game post apocalyptic. Emphasis on "post". Here's the short summary of the setting and plot: This is thousands of years after earth suffered some sort of natural cataclysm. Maybe a meteor that plunged the planet into a long winter due to dust in the atmosphere. I don't know. So it starts by showing a medieval looking civilization and only hints of a previous civilization show up. Mostly indirectly, in customs and language, but actual knowledge is lost. So the king is called president, the court alchemist is known as scientist even though no science making takes place ever, and the all white clothes are based on the long tradition of scientists wearing lab coats, but it's just dumb tradition here. Creating setting is fun lol most of this would never show up in a tiny game with barely no dialogue but it's there. The game follows this hunter guy who went for a hunt and came back to a burnt village and dead family. All that was left was a hatchet stuck to the wall of the house, so he takes it and goes on a murder spree basically. Stealthy murder though. "Hatchet" is a possible title for the game as it's the main weapon. It can be thrown but then you are defenseless until recovering it from the body. I thought about making that a mechanic. Maybe early on there is a situation where you can use it to save someone but at the cost of losing the hatchet for the rest of the run, making a hatchet-less run an interesting challenge. The trail leads to the old ruins (a shopping mall underground?). The bandits were thought to be monsters (goblins, orcs or some other medieval fantasy cliche) but are just men in masks. Then maybe there's a twist where there actually are monsters, ironically disguised as men, of unknown origin who are responsible for... things. Then... stuff happens. The end. Yeah, it got a little fuzzy at the end there.
|
|
|
Logged
|
|
|
|
Superb Joe
|
|
« Reply #10 on: September 17, 2019, 01:38:20 PM » |
|
there's a train station i used to frequent in bygone years. the train station has toilets, the trains i used also have toilets. however, there is an adjoining high class hotel which has a higher class of toilet. sometimes i found i just wanted to shit in a different toilet, and would walk into the hotel to fire one off. i would still, however, continue on my journey.
|
|
|
Logged
|
|
|
|
diegzumillo
|
|
« Reply #11 on: September 17, 2019, 02:55:52 PM » |
|
I know you're trying to communicate with a parable, but I'm too dumb and literal for it to be obvious to me Is it about working on something else for a while? Because that makes sense! I did need some time away from apple. Or is the game the toilet and I'm the train station... I don't want to know what/who the shit is!
|
|
|
Logged
|
|
|
|
Superb Joe
|
|
« Reply #12 on: September 18, 2019, 01:58:48 AM » |
|
I know you're trying to communicate with a parable, but I'm too dumb and literal for it to be obvious to me Is it about working on something else for a while? Because that makes sense! I did need some time away from apple. Or is the game the toilet and I'm the train station... I don't want to know what/who the shit is! sometimes it's nice to use a different toilet, but the journey remains the same
|
|
|
Logged
|
|
|
|
RealScaniX
Level 6
Scanix (ignore the "Real", Scanix was taken)
|
|
« Reply #13 on: September 18, 2019, 02:41:29 AM » |
|
Hehe, although it is always sad to let a side project die (I have too many of those to count as well), I think it is good for the motivation and frees the mind of those things that you are itching to try out. So you can get back to the main project with more determination.
|
|
|
Logged
|
|
|
|
diegzumillo
|
|
« Reply #14 on: September 18, 2019, 03:45:17 AM » |
|
frees the mind of those things that you are itching to try out That! this specific choice of words made my brain tingle so I think we're warmer. Sucks to have the emotional intelligence of a banana. It's actually very likely that I'll come back to this project from time to time though (maybe even update this devlog). I can't stress enough how much I enjoyed putting these bits together. I lose interest because it's completely aimless as a project, but I wanted to try some things, like building a mega drive application and creating a custom tool (which is a transferable skill I was desperately needing) and it was just fun. Plus, it's a super light weight development environment that I can take with me on my laptop (it's how it started, I was stuck at my parents' place). But it's kinda funny how I tried to get a basic grid/cinematic platformer for years. This animated sprite is old... It never takes off. I lose interest and I don't know why exactly. I once wrote a small article on these kind of games but I suspect I still don't know what makes them work. Having said that, if I were more interested in the project, combined with my irrational desire to make a mega drive game, my main project would be in serious risk of becoming my side project.
|
|
|
Logged
|
|
|
|
RealScaniX
Level 6
Scanix (ignore the "Real", Scanix was taken)
|
|
« Reply #15 on: September 18, 2019, 04:22:03 AM » |
|
Yes, that is another good point: You almost always learn some new things, that can be used in other projects, too. My main main project (lowest one on the project stack) is kinda in risk of becoming a side project, because I like the middle one on the stack more now.
|
|
|
Logged
|
|
|
|
diegzumillo
|
|
« Reply #16 on: March 28, 2020, 06:03:39 PM » |
|
All right I revived this. I have a lot on mind lately. Pandemic, a child about to born in a few weeks, stubborn parents. For whatever reason I will never understand, the only thing that puts my mind at ease is to work on this project. I tried focusing on my research, I tried apple and worm, I tried starting a new project. Nope. It has to be the weird mega drive game. Who am I to question the universe or my brain. Anyway. Any otherwise trivial progress is an achievement on the mega drive (to me, at least). So here's level transition: The sprite is in the middle of a redesign, so some animations look different. Some highlights: some objects are in front of the player, but they are on the same plane as the background objects. This is achieved by setting the priority flag on specific tiles. We don't have easy access to this flag with SGDK but it's possible to set it indirectly by using a color index that overflows a bit. Each tile/sprite has a 16 color color palette, so if instead of color 2 you put color 130, that gets translated as color 2 but with the priority flag as 1, because they sit right next to each other. I wrote a script for Aseprite that does the heavy lifting of shifting the colors of everything in the layer I want to be foreground. I'm using Tiled to do the logic of the level. Setting up floor and walls. Then wrote a python script that translates all levels into arrays I can load into the game. Not sure what this will be. I'm aiming for some kind of slow paced stealth game. There are not enough thinking games on this system.
|
|
|
Logged
|
|
|
|
McMutton
|
|
« Reply #17 on: March 28, 2020, 06:10:51 PM » |
|
Neat!
I'm loving that sprite animation- that's some good work!
|
|
|
Logged
|
|
|
|
diegzumillo
|
|
« Reply #18 on: March 28, 2020, 07:23:08 PM » |
|
Thanks! I'm dragging it around for years. It's a sprite without a cause.
|
|
|
Logged
|
|
|
|
RealScaniX
Level 6
Scanix (ignore the "Real", Scanix was taken)
|
|
« Reply #19 on: March 29, 2020, 02:26:59 AM » |
|
That looks really nice. Great animation! Also: Wow, what a crazy hack with that overflow!
|
|
|
Logged
|
|
|
|
|