• Dear Cerberus X User!

    As we prepare to transition the forum ownership from Mike to Phil (TripleHead GmbH), we need your explicit consent to transfer your user data in accordance with our amended Terms and Rules in order to be compliant with data protection laws.

    Important: If you accept the amended Terms and Rules, you agree to the transfer of your user data to the future forum owner!

    Please read the new Terms and Rules below, check the box to agree, and click "Accept" to continue enjoying your Cerberus X Forum experience. The deadline for consent is April 5, 2024.

    Do not accept the amended Terms and Rules if you do not wish your personal data to be transferred to the future forum owner!

    Accepting ensures:

    - Continued access to your account with a short break for the actual transfer.

    - Retention of your data under the same terms.

    Without consent:

    - You don't have further access to your forum user account.

    - Your account and personal data will be deleted after April 5, 2024.

    - Public posts remain, but usernames indicating real identity will be anonymized. If you disagree with a fictitious name you have the option to contact us so we can find a name that is acceptable to you.

    We hope to keep you in our community and see you on the forum soon!

    All the best

    Your Cerberus X Team

Showcase Oblique Projection Mini-Demo

Paul59

Active member
CX Code Contributor
Joined
Dec 13, 2018
Messages
384
Not exactly rocket science but any sort of projection requires a little ingenuity. The old school oblique projection was often slated compared to 'proper' isometric games but if it was good enough for Ultima 7 it can't be all bad :D

This mini demo is recorded as a gif hence the jumpiness.

obworld.gif
 
That looks great. Would it be hard to add the ability to jump and have like two levels on top of each other?
 
That looks great. Would it be hard to add the ability to jump and have like two levels on top of each other?
Multiple layers would be ok, not sure about jumping I'd have to give that some thought!
 
Here y'go. A bit confusing with these placeholder graphics but there's a solid 'bridge' near the top and a bridge with an openwork middle near the bottom.

obworld2.gif
 
Hello,
Coincidentally I've been looking for PDF books related to this theme, retro-style games to the old school. But I have not been lucky.
Maybe also an isometric view like Diablo 1 or 2?
Any books / article / tutorial to recommend?
Thank you R.-
 
Last edited:
Well there are plenty of isometric view tutorials on the net (or there were when I last looked into the subject a decade or so back!) but they seem to have become less relevant with the advent of tools such as Unity and Godot which take all the pain out of this type of view - just slap in some scenery, bung in your sprites, adjust the camera and off you go!

Top of the Google search list is https://gamedevelopment.tutsplus.co...ds-a-primer-for-game-developers--gamedev-6511 which is a decent intro but like most tutorials on this subject it stops when you get to the tricky bits.

I struggled for ages to get proper sprite making working for that type of view - I did it eventually in Blitz Basic, I've still got the source and Win executable if anyone wants it although I imaging the source is pretty horrible. Basically the method was to draw the scene, work out where the player (or any other sprite) was situated and grab that chunk of the scene into a temporary bitmap. The player was then rendered into that bitmap (overlapping everything!), then any scenery 'in front of the player' was also rendered into that same bitmap. The temporary bitmap was then drawn back over the main scene - job done! The downside happens when you get several sprites on screen that also need to be properly masked - you have to work out the correct Z order before you start rendering to those temporary bitmaps and it soon gets messy (and probably too slow). I'm sure the 'proper' method is to create a properly z-ordered 'draw list' with sprites inserted at the correct location - I've tried it several times but never fully succeeded.

I imagine Ultima 7 used the more unusual oblique projection because it's considerably 'cheaper' and that game had more than enough going on without having to expend processing power on a 'proper' isometric view. Anyway, for my little demo the technique also uses the draw list idea, simply working out where (or rather when) the player needs to be draw. The problem that always arises is incorrect masking ie sprites suddenly 'pop through' the edges of walls they're supposed to be behind. There are two ways to fix that - the easy way (that I've used) is to keep the sprite slightly away from the walls. The second way is to draw the sprite in two or more parts depending how much it overlaps adjacent cells. I've tried that several times, I've got close but it always makes my head hurt too much :D

For a general overview of projections, this page is great (and will probably bring back memories for some old codgers like me :p):


Hope that's some help :D
 
my eyes had to do a shift, like looking into a stereo 3d picture. The top right 3D is like an Escher picture ;-)

i like this a lot, it might be clearer if the blocks height isnt the same is the width/length (maybe half height).
this way the character might not fully disappear behind corridors (but this might be a feature of this effect)
 
my eyes had to do a shift, like looking into a stereo 3d picture. The top right 3D is like an Escher picture ;-)

i like this a lot, it might be clearer if the blocks height isnt the same is the width/length (maybe half height).
this way the character might not fully disappear behind corridors (but this might be a feature of this effect)

Yeah, it needs careful artwork/shading to prevent blocks 'inverting' like an optical illusion.

The half-height wall idea has been used in lots of games to reveal more of the character or other sprites.

Here's a half height block with a bit more cut out and a simple ramp (although no code to use that yet).

ob4.gif
 
Happily, multiple sprite rendering also works... (maybe this should be in dev logs rather than showcase?)

ob5.gif
 
maybe this should be in dev logs rather than showcase?
That's what I thought about all my GUI posts
 
That's what I thought about all my GUI posts
Your GUI module is pretty complete so probably does belong here. I put this little demo here without expecting to do any more with it but I'm having fun expanding it a bit!
 
Back
Top Bottom