Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411504 Posts in 69373 Topics- by 58429 Members - Latest Member: Alternalo

April 25, 2024, 04:35:17 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsPlatformer on the mega drive (for now)
Pages: 1 [2] 3 4 ... 10
Print
Author Topic: Platformer on the mega drive (for now)  (Read 29242 times)
diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #20 on: April 02, 2020, 01:27:36 PM »

Thanks! :D

That really is a crazy hack. SGDK's developer Stef suggested it. I mean, it had to be him, I only read the source code for the function definitions, the rest is gibberish to me.

I've made some progress. I am learning C as I go so there are several caveats and gotchas along the way. Not to mention a completely different approach to programming for someone used to object oriented programming. I am constantly brain farting when thinking "wait... where is this variable? is it in the ram? do I have to destroy it? can I modify it?" and I instinctively create new source and header files thinking they are entirely new classes I can add to the main game, like an unity addict. But it's good learning so far. It's forcing me to simplify things! it's amazing how often I try to generalize a problem and only make it worse. Don't create a super general Entity class crap, just write a function specifically for whatever you want to create specifically there.

Anyway, as for actual progress, I got nothing exciting to show about the game itself. The code is more organized and there is a system for updating all entities of the level etc.

But I also made a kind of compression tool for backgrounds and such. This image has 466 unique tiles:


This has 257 unique tiles:


I wrote a python script that does it. (if anyone wants the code just let me know. It's ugly, slow and inefficient but it works)

The idea is to make it somewhat easier to do large backgrounds and stuff like that. Draw the image without worrying about unique tiles, run this tool, continue working on the image until it looks nice and more efficient. Not very useful for small sprites though.

I am trying to hype myself into diving in the next big hurdle of the code: implementing basic NPCs. I already wrote an entire giant function that handles animation transitions for the player, but it's all specific to the player. I don't know if it's worth making it more general so it can be used by the AI as well or should I just copy and paste and alter whatever needs to be altered.
Logged

diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #21 on: April 07, 2020, 01:54:54 PM »

One of the most important parts of designing a game is iteration. You need to be able to implement and test ideas as quickly as possible. So programming on the mega drive is challenging enough as it is, going back and forth to test different ideas is out of the question. So I made a quick and dirty implementation of the ideas I wanted to test using Unity.



I knew I wanted to make a stealth-ish game. And I also wanted to keep things simple and manageable. So these constraints made designing these rules somewhat easier than expected. I took some notes from Yahtzee's Trilby: the art of theft (I love this game! very underrated).

Here are the rules:
A guard is in a calm state. If you approach from behind you can kill him silently. If the guard spots you, you have a couple of seconds of confusion to act, either by breaking line of sight or by killing the guard. If you don't act it goes to a state of alarm, where it assumes a fighting stance.

When the guard is alarmed a timer starts counting down. If you can't get to him fast enough he sounds an alarm and it's game over. IF you do get to him in time you kill him very noisily, and you have a limited number of noisy deaths to perform.

Killing takes a couple of seconds so you can be spot doing it.

I played this rules for a while and I quite like it! I particularly enjoy the idea of dressing the fail state (noisy killing) to make the main character look like a overpowered assassin. There is no combat in the game. The main character effortlessly kills any guard, and the in-game excuse for it to be a bad thing is that screams attract attention and can foil the mission.

It's very possible to add variations to spice up the game. I already mentioned the throwable axe. Very useful in situations like the gif above, the two guards on the high platforms. While killing one, if the other becomes alerted you won't have time to get to him so you axe him from a distance. You can't abuse the axe throwing because you need to recover it from the body.

There could be guards asleep and mechanisms to wake them up. Maybe specific guards who wake them up when alarmed.

I'm going ahead and implement the logic on the megadrive now.
Logged

Thaumaturge
Level 10
*****



View Profile WWW
« Reply #22 on: April 08, 2020, 09:35:08 AM »

That sounds like a pretty good set of rules--and as you say, one that can perhaps be built upon to create more-complex scenarios. ^_^

And it's good to see mention of Art of Theft! That was indeed a pretty good stealth game, as I recall. ^_^
Logged

diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #23 on: July 10, 2020, 09:22:37 PM »

I'm in the process of refactoring this code and I'm second guessing my design rules. So here's a wall of text to clear my ideas a bit. I think better by typing I noticed.

The whole thing of having two counters, one for alarm and one for noisy kills, is a bit awkward. Once the guard sounds the alarm what is the point of noisy killing it as well? I could make the noisy kill not detract from your counter if the guard previously sounded an alarm but that makes the killing purely cosmetic; does not serve the gameplay. And leaving the guard alerted and forgetting about it is hard to justify in the game's context.

Art of Theft, one of my inspirations, made just that, the guard just stands there shaking with fear. You already lost an alarm-life you don't need to also waste a taser-life on him. It's a good solution there but not in my context.

Alternatively I could have different effects from alarms and noisy kills. A 'life' counter for noisy kill and some effect from alarms, like increased alertness on all guards or spawning more guards. It's hard to avoid the common stealth issue of accumulating screw-ups. Every time you mess up things get harder and harder and it only escalates. So maybe a way to revert the effects of alarms could be interesting. Maybe enough silent kills could revert whatever effects an alarm had.

Also, if the effect of the alarm is cumulative, maybe the guard can sound the alarm as many times as he wants, indefinitely, which would incentivize the player to kill him as fast as possible even after sounding an alarm. A cumulative effect would be spawning guards, but making them more alert isn't. Maybe the alarm sequence could be: current guards alerted -> spawns more guards -> current guards alerted -> spawn more guards. Obviously I can't really spawn guards indefinitely for a number of obvious reasons, one of them being the console is old and frail.

Honestly, I can remove the awkwardness mentioned in the first paragraph with just the idea above, where the guard will sound the alarm again if kept alive. Sure, if you find yourself in the situation where you have no noisy kills left, and the guard is about to sound an alarm, you're already dead and might as well restart, because killing him will be game over or leave it and he will keep sounding the alarm until you run out of alarms too. I guess I can live with that.

OK I like what I got going now. Simple is good. Alarm-lives and noisy kill-lives. Guards will continually raise alarms if not killed. You can gain an alarm-life by silently killing X guards. Ooooh I like that! Maybe spawning more guards with the first alarm could work here. Instead of just making the game harder (the screw-up accumulation I mentioned earlier) it also provides more chances to increase your number of alarm-lives.

This stream of thoughts wall of text was a success!
Logged

Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #24 on: July 15, 2020, 03:44:52 PM »

Sounds like a good set of basic rules. So the noisy kill lives seems to be more of a long-term limit - with no way to reclaim them? While the alarm lives provides more of a short-term pressure to encourage the player to not make too many mistakes (or to quickly deal with the ones they have made), but through careful play can be restocked.

If you haven't seen it, you may enjoy this as an overview of how various games deal with it:

Logged

diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #25 on: July 16, 2020, 02:08:21 PM »

Hey Ishi :D your endorsing of the basic rules give me more confidence!

I've seen that video, I quite enjoy it and the channel.
Logged

diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #26 on: July 16, 2020, 02:13:24 PM »

By the way, Twitter seem to have enjoyed this sprite creation process:



Krita > Pixatool > aseprite.

It really feels somewhat backwards but it worked for me. I tried going straight to pixel art and I didn't care for the results I was getting for this guy. I will definitely recourse to this workflow whenever I'm stuck designing a new sprite again.
Logged

diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #27 on: July 26, 2020, 04:54:57 PM »

Spent some time improving the main character sprite, then trying to make a cool environment to move around. I'm going for a long abandoned facility that's been extended with primitive materials by a gang of whatevers, it's in the middle of a forest, it's snowy and the sun just set.



It's probably a good idea to get back to my Unity prototype to test those gameplay changes I mentioned earlier.
« Last Edit: July 26, 2020, 05:34:30 PM by diegzumillo » Logged

RealScaniX
Level 6
*


Scanix (ignore the "Real", Scanix was taken)


View Profile WWW
« Reply #28 on: July 27, 2020, 12:42:12 AM »

"Prince of Flashback" style. ^^
 
The graphics are really nice and also those animations!
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #29 on: July 27, 2020, 06:58:01 AM »

> (alive again)

Is that referring to this topic or to you, diegzumillo?
Logged
diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #30 on: July 27, 2020, 11:13:12 PM »

> (alive again)

Is that referring to this topic or to you, diegzumillo?

The topic. I am still too tired all the time to feel actually alive!  Tongue

"Prince of Flashback" style. ^^
 
The graphics are really nice and also those animations!

thanks! :D that scenario took me way too long to make.

I was thinking about these games again the other day. I include blackthorne in that category too. I remember fondly of these games, everyone does it seems. But they're not good, are they? They look amazing and they really do sell the setting and mood. But the gameplay is terrible.

I hope it's not too bold and arrogant to hope my entry, if ever finished, will be different. At least in the gameplay department. I find the control scheme these games are famous for to be unsuitable for action platforming, which is what they did. Come on, you're stuck to a grid! it's the ideal setup for more strategic mechanics.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #31 on: July 28, 2020, 12:16:39 AM »

Quote
I am still too tired all the time to feel actually alive!
This is also known as the first year of fatherhood Tongue
Logged
diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #32 on: August 05, 2020, 10:25:11 PM »

Guard animation is coming along. I'm still not happy with the walk but it's getting there. Turn animation is missing. I refactored the code to decouple the AI from its movement. It was a lot of work but in the end the code is much better and easier to work with.

(excuse my giant cursor)


I may have mentioned this before but I'm considering giving the character a throwable weapon. The gameplay effect is that you can use it to kill an enemy from behind quickly or kill from afar, which needs to be recovered from the target, but when taking an enemy down from up close without it takes longer. My hope is that it creates interesting decisions for the player to make, specially when it can be difficult to recover the weapon. Does that sound interesting? Very interested in hearing opinions on this!

Non devlog comments:

I have an announcement to make: this is now the main project! Apple is far from dead, but it really seems to work better as a side project. I mean, that's what it was since its conception, if I'm being completely honest; my coping mechanism for when work got too stressful. But now I really don't feel like investing too much of my time on it. But I am having a lot of fun with this project! so for now I declare it the main project.

I am also considering taking this even more seriously, looking for ways to fund development. It would be a first for me but I'm unemployed in the middle of a pandemic! why the hell not give it a shot, right. Crowdfunding is the obvious way to go but I am finding that too difficult to do from where I live. I am confident this is a marketable product, but it is definitely for a very niche market! stealth for an old console and such. So I can't really use local crowdfunding sites that target specifically my country. If this is to succeed it needs to find its audience scattered all across the globe.

This is where I'm currently stuck. Kickstarter and Indiegogo, the crowdfunding sites with global reach, do not accept campaigns created from my country (Brazil). I reached out to brazilian creators with successful campaigns in the past. One told me at the time his campaign aired the country was not an issue, the other just said "we are an american company Wink". The latter made me a bit sad. Taxation in my country is so bad they prefer to live in country A and maintain a company in country B, paying taxes to B and with all the costs of occasional travels and monetary transactions. But I digress.

Anyway, just wanted to get this off my chest. Whatever I decide to do it will have to wait for the game to be in a much more advanced state anyway, so I got some time to consider my options. I would also be interested in hearing opinions and experiences, if anyone cares to share Smiley

Logged

JobLeonard
Level 10
*****



View Profile
« Reply #33 on: August 05, 2020, 10:52:24 PM »



Giant cursor gang rise up!

Quote
I have an announcement to make: this is now the main project! Apple is far from dead, but it really seems to work better as a side project. I mean, that's what it was since its conception, if I'm being completely honest; my coping mechanism for when work got too stressful. But now I really don't feel like investing too much of my time on it. But I am having a lot of fun with this project! so for now I declare it the main project.

You're an indy dev, you don't owe anyone anything except maybe yourself and your own well-being, so don't worry about these kinds of things too much Smiley. I'll miss the updates on farting hyperdimensional worms though (there's a sentence I never expected to write)

Good luck with approaching this project more "professionally"
Logged
diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #34 on: August 06, 2020, 03:37:42 PM »

Thanks Smiley We will see how this unfolds.

I'm actually pretty sure by the time it gets ready to launch a campaign of sorts my life situation will have changed, forcing me to reconsider the plan.
Logged

Ishi
Pixelhead
Level 10
******


coffee&coding


View Profile WWW
« Reply #35 on: August 06, 2020, 04:04:32 PM »

I may have mentioned this before but I'm considering giving the character a throwable weapon. The gameplay effect is that you can use it to kill an enemy from behind quickly or kill from afar, which needs to be recovered from the target, but when taking an enemy down from up close without it takes longer. My hope is that it creates interesting decisions for the player to make, specially when it can be difficult to recover the weapon. Does that sound interesting? Very interested in hearing opinions on this!

I really like this idea so I'd say give it a try. It seems like a neat way to introduce additional options for how to approach a situation with risk/reward choices to make. It also gives the player a resource to manage without having to add the concept of an actual inventory with multiple items/weapons.

Do you imagine it being a straight-line throw, or one with an arced trajectory (and a preview of the arc)? Would it be possible to throw it down a pit and lose it forever? Could throwing the weapon at a wall/floor work as a distraction to draw guards in that direction?

Good luck with focusing more on this project, looking forward to seeing progress Coffee
Logged

diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #36 on: August 06, 2020, 04:12:00 PM »

I really like this idea so I'd say give it a try. It seems like a neat way to introduce additional options for how to approach a situation with risk/reward choices to make. It also gives the player a resource to manage without having to add the concept of an actual inventory with multiple items/weapons.

Yes! I really needed some validation there  Cheesy

Do you imagine it being a straight-line throw, or one with an arced trajectory (and a preview of the arc)? Would it be possible to throw it down a pit and lose it forever? Could throwing the weapon at a wall/floor work as a distraction to draw guards in that direction?

I haven't even considered other trajectories beyond straight line until target until you mentioned it. But being a straight line fits better with my grid based design, methinks. I did consider using it to make noise and activate things from a distance, but now I think other trajectories could help expanding the possibilities here.

Good luck with focusing more on this project, looking forward to seeing progress Coffee

Thanks  Coffee
Logged

diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #37 on: August 07, 2020, 12:08:51 PM »

I know it's not much but after all that code refactoring it's nice to see it all working again. Here's some flavored debug messages:



Any taffers out there? Tongue
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #38 on: August 08, 2020, 12:24:49 AM »

Hahaha, aargh I can remember the dialogue but not the game!
Logged
diegzumillo
Level 10
*****


This avatar is so old I still have a some hair


View Profile WWW
« Reply #39 on: August 08, 2020, 02:03:30 PM »

It's Thief!  Ninja The first two are among my favorite games of all time
Logged

Pages: 1 [2] 3 4 ... 10
Print
Jump to:  

Theme orange-lt created by panic