Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1412116 Posts in 69451 Topics- by 58491 Members - Latest Member: tzdevil

June 28, 2024, 04:57:27 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsCathedral [RELEASED] - (8 bit style Metroidvania game)
Pages: [1] 2 3
Print
Author Topic: Cathedral [RELEASED] - (8 bit style Metroidvania game)  (Read 7640 times)
Lavesson
Level 0
***


View Profile WWW
« on: February 22, 2015, 06:42:44 AM »


CREDITS
I'm going to try and keep a list here and credit everyone involved so far:



Started working on this somewhere around early January 2015 - to start with, mostly to learn OpenGL (mostly been using DirectX before this). I'm writing it in C++ using GLFW, plus OpenAL for sound (actually, cAudio as an OpenAL wrapper). Physics, gridsystem, tools etc. are all handrolled right now.

I've changed the look of it a few times as I've learned more about pixel art, since I hadn't really ever done any pixel artwork before. Right now, most of the sprites/tiles are made by me, but I finally gave up on the character design and involved a freelancer instead for doing characters.

Extremely early in development. It's *playable*, but not much more. I've spent most of the time the last two weeks polishing some tools that I built, most notably my level editor, and the last few days to really polish the collision detection to get the right feel. The editor is hacked together in C# using WPF (and I think I'm utilizing every last WPF feature that I know of in order to get it to work)



In short, it's a Metroidvania-style game. I'm keeping pretty close to the NES palette (with some additions). Gameplay-wise, I actually got a lot of inspiration from Wonderboy III - The Dragon's Trap for Sega Master System. I guess another way to see it would be as a side-scrolling Zelda-inspired game. There's an overworld, plus seven dungeons (or erm.. that's the planned amount. I'm nowhere near done with them)

Right now, I'm working on a "portal system" to be able to transfer the player from one playable area to another, such as doors, screen edges etc.

The style is solid enough for me to share it at this point. Feel free to give me feedback along the way Smiley
Nothing is set in stone, and I'll just have to see what it evolves into  Wink
« Last Edit: January 05, 2020, 05:28:10 PM by Lavesson » Logged

Lavesson
Level 0
***


View Profile WWW
« Reply #1 on: February 22, 2015, 06:44:41 AM »

A few more (higher-res) screenshots:

https://dl.dropboxusercontent.com/u/5202409/dev/tig/1.png
https://dl.dropboxusercontent.com/u/5202409/dev/tig/2.png
https://dl.dropboxusercontent.com/u/5202409/dev/tig/3.png
https://dl.dropboxusercontent.com/u/5202409/dev/tig/4.png
Logged

Lavesson
Level 0
***


View Profile WWW
« Reply #2 on: February 22, 2015, 07:37:02 AM »

Although this clip features an older character (which has been heavily redesigned), here's a quick timelapse with the editor, and about 30 seconds of the music that has been finished so far:





EDIT: Some credit where credit is due. The music in this clip is made by an very talented guy named Aron Kramer. He's working on one of the themes right now, and from the looks of it, he's going to be the one producing the sound track to the game in general. You can find more of his work on SoundCloud:
https://soundcloud.com/aron-kramer
« Last Edit: February 22, 2015, 10:07:44 AM by Lavesson » Logged

phyerboss
Level 0
***



View Profile WWW
« Reply #3 on: February 22, 2015, 07:59:43 AM »

Looking good!

The outside levels remind me alot of "Simon's Quest"! Will there be a day/night cycle?
Logged

Beta Coming Soon!
Lavesson
Level 0
***


View Profile WWW
« Reply #4 on: February 22, 2015, 08:10:42 AM »

Thanks.

I hadn't really planned for a day/night cycle. The plan right now is that day/night will simply depend on which area you're in. On the other hand, I can think of some pretty cool stuff that I could to if I had a decent day-night cycle in place.

Hm. I think I'll put that in the "nice to have"-feature bin for now. Smiley
Logged

Neeko
Level 1
*


View Profile WWW
« Reply #5 on: February 22, 2015, 08:47:48 AM »

Like the idea of this, interested to see how it develops. It's going to be challenging sticking to that NES palette Wink

I would come up with a better design for the player sprite though. He's a bit too generic looking and doesn't have much personality. Just my opinion Smiley

I assume there'll be weapon upgrades and such? What's the basic attack right now?
Logged

Currently developing Demons with Shotguns, a 2D competitive platformer arena game.
MindShaft Games
Lavesson
Level 0
***


View Profile WWW
« Reply #6 on: February 22, 2015, 10:02:00 AM »

Oh, sticking to the NES palette has already proved to be challenging Smiley
I've already cheated by adding a few colors (four so far). The brown color in the background tiles in the first screenshot is one of them. There's really not a lot of darker colors in the palette. But I'm trying to not go crazy with extra colors, as well as keeping track of which ones I actually add.

This is the third version of the main character. I'll have to see how well he fits in the game as I flesh things out, but I might very get him changed around a bit again Wink

The basic attack right now is just the sword, plus the ability to block using the shield. Here's my plan so far:

  • Swords should be upgradeable throughout the game. I would like to have different sprites for these as well (you should really *see* that you've upgraded your weapon). I'm thinking of doing this by having the weapon as a separate sprite sheet laid on top of the player.
  • I want to have at least two different shields, one which stops basic attacks and one that'll stop heavier attacks as well, meaning that I might do this as another overlay sprite.
  • I'm currently trying to decide between having a secondary weapon system, or a magic system. I'm not sure which route to go here yet.
  • Every dungeon will feature some kind of "special item" which will help you progress (for instance, finding an item that will help you reach previously unreachable areas)

That's the core idea regarding weapons/defense though Smiley
« Last Edit: February 24, 2015, 03:55:15 PM by Lavesson » Logged

Balduranne
Level 0
*


Silent Watcher


View Profile WWW
« Reply #7 on: March 07, 2015, 07:17:17 AM »

Hi, I'm the gal that made that character sprite Smiley
You can contact me through here now.
Logged

Freelance Pixel Artist, woo
Apparently my PM notifications are broken, so don't be offended if I don't reply.
Lavesson
Level 0
***


View Profile WWW
« Reply #8 on: March 08, 2015, 04:02:48 PM »

So. We have some pre-alpha gameplay. I've finally been able to sit down and get a decent amount of work done over the last few days.

Here's the link to the video:




In short:

* Portals are mostly done. There's visible ones (i.e., doors) and invisible ones (mostly for screen edge transitions). Portals can be triggered either manually (by pressing a button) or automatically (by just colliding with them). This was probably where most of the work this weekend went. Triggering a portal means releasing the old area from memory, loading a new one, plus having a decent transition between them. There's still some issues with restoring input state between areas.
* Been spending some time fixing a couple of GLSL issues that screwed up overlapping textures with alpha channels.
* Major tweaks on the physics engine and the controls - basically, by making the physics engine less.. real Wink
* Various quad tree tweaks and optimizations to allow both physics and rendering to work better - and faster.
* REALLY simple enemy interactions in place.
* A bunch of work done on the editor as well to be able to place and configure portals of arbitrary sizes

In general, a lot of the stuff I've done over the last week has been to replace a bunch of crappy prototypes with actual robust code Tongue

All in all, a good week.
Logged

Lavesson
Level 0
***


View Profile WWW
« Reply #9 on: March 28, 2015, 06:09:54 PM »

So. Some more gameplay again, available at:



Last week has been spent working on various optimizations and tweaks. Had some issues with the parallax scrolling layers, but I've managed to resolve most of it. I've also gotten a nice start on the enemy AI engine for the game. The gameplay vid basically shows standin/placeholder sprites for the enemies right now (I threw most of them together in PyxelEdit in something like 10 minutes)

There's also been a bunch of work done outside of development, such as story-wise and fleshing out character and enemy behaviour. Still got quite a bit to go here, but at least most of the ideas has been scribbled down somewhere Smiley

Anyway, as usual, feedback is highly welcome.


Logged

Lavesson
Level 0
***


View Profile WWW
« Reply #10 on: April 06, 2015, 06:31:57 PM »

I thought I'd talk a bit about how I reason around things such as enemy behavior in a game such as this one, and how I go about to translate that behavior into code.

I’ve spent the last couple of weeks working on various kinds of enemies and enemy AI/behavior. Cathedral is a pretty simple game in terms of this since I’m doing it in the style of a classic platformer, so the algorithms don’t have to be too sophisticated. This post will mostly outline how I think about enemy design – hopefully it will either help someone else, or someone might point out a better way to do things than I currently do Smiley

Anyway, one of the enemies I designed in the last couple of days is this reaper character:


I generally start out by trying to figure out the behavior by just sketching a few ideas paper. I usually have a rough idea of what the sprite should look like, but seldom something completely finished. I tend to start out by doing a quick throwaway sprite/design just to try some ideas out. But to start with, I'm more interested in pure behavior.

So, for instance, in this case, I want the reaper to:
  • Pace back and forth in the air, waiting for the player to come close
  • If the player is within a certain preset distance, the reaper should start chasing the player
  • If the player is REALLY close (another preset distance), then the reaper will start to prepare for a strike, basically to give the player a short amount of time to react and get out of the way.
  • After the preparation phase, the enemy will try to hit the player. If the player should hit the enemy before that, then the attack is interrupted.
  • If the reaper hits the player, there’s a short cool down period before it attacks again (so the player is not completely overwhelmed by attacks)

So, what I find interesting to talk about, is how to visualize this and map these actions out to understand how everything should interact, and which invariants I need to uphold in my code. It turns out that this is pretty easily represented as a finite state machine (http://en.wikipedia.org/wiki/Finite-state_machine).

I have a fixed number of states that the enemy can be in, and I have various rules for transitions between these states.
At this point, I usually separate states and the transitions between them. For instance, my reaper character can be in the following states:

  • IDLE – The “pacing back and forth” movement
  • CHASING - he enemy is chasing after the player
  • PREPARE – The enemy is preparing an attack
  • ATTACK – The actual attack
  • COOL_DOWN – Cooling down after a successful attack

Having a whiteboard at hand is pretty nice at this point. Just drawing out the states is helpful:


The next thing to determine is the allowed transitions. Basically answering questions such as "when the enemy is idling, which state can it actually go to from there?"

Well. From IDLE, we can go to CHASING which is triggered when the player is within a set distance. However, we can also transition from CHASING to IDLE if the player runs away and gets outside of that distance again, so I then continue by filling out the different allowed transitions in my diagram. As an example, for these two states, we get a really simple state machine:


After filling out all the transitions, I have the final FSM diagram:


... And finally, I like to add a bunch of labels to it to mark the actual rules for the transitions:


These things tend to carry over pretty well into code. In C/C++, states just tend to become a private unnamed enum, such as:

enum {  
    COOL_DOWN,
    IDLE,
    CHASING,
    PREPARE,
    ATTACK, } _state;


In short, the enemy AI just becomes a switch where, depending on the current state, I check for various transitions and perform them if needed. Basically, I combine these with a bunch of timers which takes a lambda as a callback, giving me expressions such as:

_coolDown.onDone([this]() {
    _state = IDLE;
});


I’m not going to cover the code itself too much in detail since it’s going to differ depending on language (but feel free to ask questions about it). I was more interested in just sharing the overall design process and how to make sense of what code you actually need to write. So: basically some of the architectural stuff. Hopefully it gave some useful insight to someone Smiley
« Last Edit: April 06, 2015, 06:41:41 PM by Lavesson » Logged

SirNiko
Level 10
*****



View Profile
« Reply #11 on: April 07, 2015, 03:09:57 AM »

Looks cool. It's giving me a bit of a Wizards and Warriors vibe.
Logged
Lavesson
Level 0
***


View Profile WWW
« Reply #12 on: April 07, 2015, 03:59:37 AM »

Thanks. Initially, I didn't think of Wizard and Warriors that much, but the way the main character turned out, I've noticed that too Wink
I even started giving it a playthrough a few weeks ago to see if I could find some interesting mechanics to borrow from W&W Smiley
Logged

Lavesson
Level 0
***


View Profile WWW
« Reply #13 on: April 07, 2015, 07:47:42 AM »

A quick screenshot update. Today, I finally had some progress with the start menu. I think I got a pretty decent retro look going for it. Slightly inspired by the start screen from Wonderboy III - The Dragon's Trap Smiley

Larger version at: https://dl.dropboxusercontent.com/u/5202409/dev/tig/intro-large.gif

Logged

Join Indies
Level 0
**



View Profile WWW
« Reply #14 on: April 07, 2015, 12:43:23 PM »

Nice job nailing the NES art style. I like the waterfall texture, but I think the animation could be improved. It doesn't quite look like the water is flowing down, but instead moves a little up and down.

See this video of a waterfall in Final Fantasy Adventure on the Gameboy:
https://youtu.be/mG2VaazWFPg?t=2m9s
Logged

Watch videos of new indie games, updated daily. Promote your game on http://www.joinindies.com
Lavesson
Level 0
***


View Profile WWW
« Reply #15 on: April 07, 2015, 04:14:41 PM »

Thanks for the feedback, and yeah. I completely agree - The waterfall animation was really a throwaway thing that I made in ~5 minutes. This is actually something I've been meaning to do for a while, but always ended up thinking "Eh. Good enough for now at least".

And thanks for the link: that kind of animations really isn't that hard, so I gave it a try right away, reusing the old texture. I think it turned out pretty nicely (sans the hackishness when the gif loops around):



Logged

Join Indies
Level 0
**



View Profile WWW
« Reply #16 on: April 08, 2015, 09:49:51 AM »

Cool, yeah it looks perfect now!  I like the splashing at the top.
Logged

Watch videos of new indie games, updated daily. Promote your game on http://www.joinindies.com
Lavesson
Level 0
***


View Profile WWW
« Reply #17 on: April 15, 2015, 02:33:10 PM »

This last week seems to have been about everything related to gamedev, except the actual "dev" part. Budget, todo-lists and a bunch of other things.

We did, however, manage to put together a rough draft for an intro. Mostly due to Aron (our musician) delivering a new song that got me in the right mood to work on this (albeit by giving up some sleep). You can see the video here:





As I said, it's definitely a rough take. We'll probably work more on graphics and timings with the soundtrack etc. But as a first draft, it's pretty ok Smiley
Logged

Lavesson
Level 0
***


View Profile WWW
« Reply #18 on: June 22, 2015, 06:17:42 AM »

A LOT of updates has been incorporated into the game, and I've recorded about 6 minutes of gameplay, leading up to the first boss (which is not included in the video yet). See the end of the post for the video

It's been a few months since I actually posted something here. A lot has happened, both with the game and everything around it.
The first thing that took most of our efforts for a while was a submission to IndieCade 2015.

We've also put a lot of work into forming a company (which is always tricky when two of the co-owners are in different countries). We have an extremely simple webpage set up: http://decemberborn.com/

Some of the more major updates to the game itself:

* Created an entirely new starting level
* Added support for dialogues/text
* An effect framework has been written to allow effects such as thunder, screenshakes etc.
* More and more moves towards Lua scripts (and so far, we've lost *very* little in terms of performance)
* A bunch of minor changes everywhere in core gameplay, based on playtest sessions (both from Tigsource feedback, as well as smaller IRL play sessions). This ranges from minor graphical changes to how the controls feel and so on.
* Entirely new music score

We're still working on getting things to work as smooth as possible, but things have gone in a very positive direction overall. We're starting to close into being able to release another playable demo with a lot more content. After that, I'll probably spend the next week continuing work on getting the game to compile on GCC to be able to bring it to Linux and Mac as well.

Enjoy the video, and as always we'll happily take any feedback we can get. So far, outside feedback has been the #1 thing which has helped us progress Smiley

Logged

Lavesson
Level 0
***


View Profile WWW
« Reply #19 on: June 23, 2015, 03:34:36 PM »

One of those nights when the workload seems a bit overwhelming, but the results are turning out decent. We've been working on a few area and enemy mockups. Trying to keep to the whole Castlevania/Ghost n' goblins-feeling that we've tried to capture from the start.

So, first up - working on a new area. Basically a graveyard with a few sidequests:




Also, one of the animations for the first boss. Most of the resources are done, and we're trying to figure out movement patterns / attacks etc. and then we're all set for writing the logic for this one:
Logged

Pages: [1] 2 3
Print
Jump to:  

Theme orange-lt created by panic