Sign in to follow this  

[DevLog] Shards of Celetin

Recommended Posts

So I figure I should start chronicling something about this project as slow or as fast as it ends up moving. Hit a bit of a milestone recently, graphics engine up and running with basic physics, so riding the positive wave while it lasts!


Shards of Celetin (not entirely happy with the name, but unlike Phantasmagoria it doesn't clash with another game) is a 2D role-playing game based on an alternate timeline for Earth (another one of Those, yup), one where humanity evolved from cavemen with access to the powers of the elements. Fire, Air, Metal and Ice. Not the usual quartet, but there are reasons for that.


There will be some combat (or even more than some if you're really motivated to do so) but the primary context will be puzzles, wayfinding and dialogue-driven plot movement. There are a lot of cool things you can do with elemental powers in combat, but I also figure that affords a lot of creativity in solving puzzles, too.


I'll be updating this devlog with, well, whatever. It could be sprite art, it could be ingame capture, it could even be worldbuilding if people are interested. It's a world I've spent a lot of time across the years crafting (born as an idea for a novel a lot earlier on in my life) that I'm always revisiting and carving out new details for. The current setting is "modern day", the real challenge will be drawing out the world I've made into the game itself (in an easily-accessible manner). I hate the Skyrim-style of "find random sodding manuscripts everywhere".


Current Version:




Scrollable viewport, predictive collision detection and fixed-step renderer / physics (for now). Lot of the data-level stuff done behind the scenes. I've even made a start on devtools, to make making all the JSON data so much easier than writing it out by hand.


Immediate Goals:


  1. Tie renderer to refresh rate (crude v-sync, with double-buffering shouldn't cause any artefacts). Currently fixed at ~60FPS.
  2. Update and integrate physics model into game view, and with the controls. Currently inheriting a fixed speed for the player character and nothing else, with no acceleration / deceleration.


Not-So Immediate Goals:


  1. Sprite art! I've been trying to work on a style, so we'll see where that goes. I want to replace the temporary background and player sprite, as the most-pressing thing.
  2. Layered renderer. Will involve designing atlases for my sprites. I want to do some particular magic here because layered puzzles with multiple layers of interaction == goal, and visualising that will be important.
  3. Everything else in the game.

Share this post

Link to post
Share on other sites

Whoops, knew I forgot something important. Java! It's the language I work in, and I don't have time to scope to consider writing something like this in a new language regardless of how easy it is to pick up.


Does mean it'll require Java installed to run, but thankfully recent versions have had all the drama-story-malware issues patched out (and they're mainly focused around the web plugin anyhow, which is deprecated now). The benefit to this is that it'll be cross-platform (MacOS, Linux, Windows) by default.


Been trying to get a feel for a pixel art style, going to try and work on fire next. I've always had more luck with fire, this is the first ice-based animation I actually like.






Not final, WIP, etc.

Share this post

Link to post
Share on other sites

I kept on panicking that I hadn't updated this in forever, looking at the dates it's only been little over a month, which for me is a very short amount of time! Progress has been made, but mostly of the non-visible sort.
Things I've broken:

  • Map scrolling. There's a bit in the active viewport code that needs fixing combined with how I address edge offsets.
  • Collision detection. Hooking up physics broke my simple intersection checks.

Things I've fixed:

  • Physics, mainly. Apart from collisions, everything is in and working.
  • The god-awful ice animation I was so briefly proud of in the post above :P

Detailed additions:

  • Constructed an action-based event system to control all actionable events in the game (us English love our redundant wordage). All player input is associated with an action, and various action queues are processed once per frame to drive the ingame simulation (which is then presented by the renderer).
  • Hooked up GameObject physics properties to the movement action queue (and fixed all of the physics calculations. Lots of embarrassing mistakes in there by yours truly). The only defined constant is acceleration (in terms of movement), this gives a gradual speed increase as we multiply it by the time spent accelerating (there is a cap, of course :P). Among other things, such as gravity, weight, mass, force, and so on. All sorts of goodies for when I start implementing abilities.
  • Sprites now have facings, so when I get around to doing more spritemap work the action queue for movement also updates their respective facing (left, right, up, down). Four-way movement in this game (engine), at least for now.
  • Keybinds! Got the basics implemented, and a fallback for all unsupported keys. I've got the groundwork for user / custom keybinds too, but that isn't implemented yet.
  • Game engine now properly flows through the game loop, from recognising player input to updating the simulation (and AI actors, if any) through to the renderer. Nothing displayed in the game world at the moment is "hacked in" anymore! :D


As promised, my improved ice shield animation. Animations take a lot of time out of me at the moment and I'm still finding a style I like with regards to the game itself, so progress on this front is very slow.

(click for raw, as it's very long)
Not final, I have both a detail pass to go through and I'm going to be inserting some frames near the end to smooth out the filling-in effect (it's a bit rushed at the mo).
Until next time!

Share this post

Link to post
Share on other sites

Next time turned into a blog post, which you can find here.


I've been messing about with physics, basically. I think I'm almost there, the code is much nicer than it was and it very nearly works. Just the odd game-breaking bug or two impeding my progress!


Getting closer and closer to having to start making a lot of artwork to get the basics of the game into shape.

Share this post

Link to post
Share on other sites

My post above reminds me of why I don't 100% go in for optimism these days. There's always something horrendous lurking round the corner.


Sean H

[12:03]    i'm now just happily renaming a lot of my viewport object code because i realised i gave things incredibly dumb names
[12:03]    like private Dimension dimensions when I handle both the viewport dimensions and the whole map size dimensions in the same class
[12:04]    maybe i should code more in the daytime
[12:04]    as supposed to 11.30pm at night after a large bottle of pepsi
[12:06]    urgh my offset code doesn't even start from 0 which shmuck designed all of this
[12:06]    oh wait me of course
[12:07]    problem i have is i trained myself out of pointless code rewrites (was rewriting stuff that worked to try and get it "perfect") and this now means i'm averse to rewriting semantic stuff like this
[12:07]    which in fact it's kinda necessary otherwise i come back a month later and stab myself in the eyes


Other people talked and laughed at me during this time but it's mostly inconsequential ;)


So basically stuff got Buggy. I'm still trying to work out why I'm seemingly missing actions being sent from keyboard input to the controller stack (as the same actions control both player movement and map scrolling . . . yet the player moves faster than the map does. And yes I'm taking acceleration into account). Some of my directions do weird things to character position and also I'm reworking the viewport logic so it doesn't crash when you scroll in any one direction.

Hope this update makes you laugh as much as it did me. I needed the catharsis :D

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this