Posted October 26, 2023 by Bluestar03
Hi and welcome to the development journey of Chronicle Destiny! My intention is to release a development snapshot every month, around the 22nd, accompanied by a post detailing the progress made so far. This marks the first installment of this Devlog.
The primary objective of this release is to evaluate the feasibility of the game's art style. I draw inspiration from various GBA titles, particularly Kingdom Hearts: Chain of Memories Spyro: Ripto’s Revenge and Sonic Battle. Those games utilize an isometric perspective and feature a high degree of fast action gameplay. The chosen game engine, GameMaker, is capable of handling isometric games. However, instead of constructing the isometric perspective using 2D tiles as in KH:CoM or S:RR, I aim to replicate Sonic Battle's approach by positioning 2D sprites in a 3D environment, employing simple planes and blocks for terrain and objects.
While GameMaker does offer 3D capabilities, it doesn't excel in this area. Nevertheless, after exploring Godot for a while, I decided to proceed with GameMaker due to my familiarity with the engine since version 5. Additionally, the tutorials by DragonitSpam, and others, have helped me to achieve the current state of development.
This first release is quite basic in terms of mechanics, implementing only a simple top-down movement system. The primary focus has been on establishing the 3D isometric visuals. The standard GML setup involves enabling ztestenable, zwriteenable, and alphatestenable to activate 3D rendering. A struct controls the camera's movement. It holds variables for spherical coordinates, radius, angle, and elevation, allowing the camera to be positioned around the player. The elevation is set to 30 degrees to achieve the isometric look. The spherical coordinates are converted to standard Cartesian coordinates (XYZ).
Crucially, the camera's projection matrix is set up for orthographic projection. However, an issue arises when using matrix_build_projection_ortho(), as the built-in tile system fails to render the tiles correctly based on the camera's configuration. A solution involved creating a draw surface significantly larger than the required size. This ensures that the tiles being culled away fall outside the draw surface's center. Only the center of the surface is drawn on the screen. This solution became overly complex, leading me to consider abandoning orthographic projections. Fortunately, DragoniteSpam released a tutorial on converting tilemaps into vertex buffers, effectively resolving the issue. The target resolution is 640 x 360 to capture the handheld pixel aesthetic. The resolution is adjusted to fit the screen's aspect ratio, following a tutorial by Pixelated Pope.
The next task involves determining how to represent objects on the screen. The ground will be represented by tiles, or rather, vertex buffers derived from tilemaps. But how will characters, scenery, props, and effects be represented? Billboards provide a partial solution. Billboards are images that always face the camera. A key aspect to avoid is making billboards appear as flat planes in 3D space. I want to avoid the look of a cutout diorama, similar to Octopath Traveler. Rather the flat look of KH:CoM and Sonic Battle. The combination of orthographic perspective and low resolution helps prevent that effect. Currently, four methods are employed to represent objects: sprites, billboards, prisms, and .obj models.
This first release focuses on establishing a foundation for a 3D isometric game using GameMaker, an endeavor that has been successful so far. It lays a solid foundation for an action-adventure game. The following releases will focus on refining player actions, input mechanisms, artwork, and dialogue. Player actions will encompass attacking, jumping, and general platforming maneuvers. The aim is to create a set of actions similar to those in Chain of Memories, with additional inspiration drawn from Zelda, Metroid, and Fable games. Input support will be implemented for gamepads and touch screens, paving the way for a mobile build. Currently, the artwork is in the form of programmer's art, functional but lacking in polish. Subsequent releases will enhance the quality of the art assets. As development progresses, the artwork will evolve from functional programmer's art to a polished final product. Dialogue is the game's primary hook, and a significant portion of effort will be directed towards getting this mechanic right. That concludes the summary of this release. I hope to share the next update in approximately a month.
Thanks for your time.