Nov 11, 2011

You can't be a game developer without a developer's blog! That's just how it is. So needless to say, in spite of the fact that my engine is on build v0.4 in alpha phase and I'm just now getting around to this, it's only logical that I have a blog dedicated solely to my current project without any poetry or movie reviews to clutter it up.

First off, for those of you who don't know what it is I'm developing - which shouldn't be any of you unless you somehow found your way here via Google - my current amateurish project is a Castlevania game engine based on Dracula's Curse for the Nintendo Entertainment System. Originally this project was simply titled NES-Style Castlevania Belmont Engine for GameMaker. Well, cognitively it was a simple title. As you can tell by the blog's title, though, I've since named it GMVania, a portmanteau of GM (Game Maker) and Castlevania. GMvania is my first serious game development - serious in that I have people waiting on my code, which means I now have obligations to fulfill - but it is still very much an amateurish project, even by GameMaker standards.

The initial aim of GMvania at the time of its conception was ismply to provide a movement and stair-climbing script for other GameMaker programmers working on Castlevania games, since I was sick to death of the recent trend of Metroidvanias with ramp-style stairs as opposed to the classic passable stairs which required pressing up or down to traverse. It was soon clear I had no idea how to code efficiently at all, but the endeavor was well-received in local communities and has since grown into a full-fledged postponed production.

The first release was very basic and grossly bugged. Trevor could walk back and forth, jump, duck, attack, climb stairs, and get stuck in walls. I didn't mean for that last bit to happen and endeavored to fix it. I ignored many of the built-in functions in GameMaker in order to work with my own movement and collision scripts based on what was known as the Granny Engine, which I found while Googling platformer engines. This allowed me much greater flexibility in debugging my engine, so much so that I discovered some bugs in GameMaker itself, notably the image_xscale bug. In version 0.4a, I'll have countered that bug with my own personal script derived from my findings while studying the image_xscale bug.

Some of you may be wondering why I use GM8.0 instead of GM7 or GM81. The simple reason is that iit more stable than GM7, has better functionality than GM7, and is backwards-compatible, unlike the abomination that is GM81. My engine itself isn't backwards compatible, though. It requires GM8 to use.

Throughout this blog I will post updates on some changes I make to the program or discuss certain bugs I find. In other worsd, the main intent of this blog is so you people don't think I'm just laying in bed doing absolutely nothing at all. ... Yeah, I'm laying in bed right now, but I'm typing this blog instead of sleeping!

2 comments:

  1. How's this coming along? I've been interested in trying the Belmont Engine for Game Maker.

    ReplyDelete
    Replies
    1. Oh, I never saw this comment because I don't go to the dashboard and this was the first post ever in the blog.

      The original Belmont Engine was scrapped because - to be honest - I coded it in a quirky way that only made sense to me. I got a lot of flak for it back in forums for it, so I have been modifying the format. One day I'll code it to save memory, another day I'll code it to be easier for other people to work with.

      In the past, I used the alarm variables for everything. That got confusing really fast, even for me (and I was the one that put the system into place), so I ditched that and replaced many of the alarms with variables. This increased the memory use, but made the codes easier to work with. I also used to use timelines for handling the state machine, but I didn't like how GM handled timelines, so I rewrote the code once more. Now it's all handled in scripts grouped as well as I can group them. Lately I have been going back through scripts and adding comments as well, such as what each script is actually for. To keep the code somewhat clean, though, most of it is still not commented and it takes some understanding of the code to change elements in it. Down the line I may add some comments like, "Adjust line 37 for walking speed", but most of the code would probably not need to be altered for most people.

      Things got complicated when I switched over to Game Maker: Studio. While I still code the engine in GM8 on my old laptop, things which would work in GM8 but not GMS I have had to move to their own scripts and work around that. For example, palette swapping works just fine with sprite_replace() in GM8, but is handled better with shaders in GMS, so the palette swap script needs to call the GIF swap script in GM8 and the code to change the shader properties in GMS. I haven't gotten around to coding the shader yet in Studio, though.

      I also get distracted with transcribing code from various games over. So while the original project was based on Dracula's Curse, I have since gone and tried adding some elements (mostly enemy AI) from Castlevania, Simon's Quest, and Kid Dracula - the latter being much harder to implement due to coding differences.

      Then there's life. I'm not devoted completely to this project, so it has been taking me a long ass time to work on it. It was one thing when I was single; it's another thing when I have a girlfriend pestering me to pay attention to her. But yes, I am still working on it.

      Delete

©TheouAegis Productions™. Powered by Blogger.