Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

What are you working on? (Game Making Thread)

BizarreMonkey":1oqn1l5d said:
Progress has not been great lately, been more busy streaming games and taking a break. Burnouts suck. However one of the best cures is my artists or composers getting work done so I have files to implement and test out.

If they manage to get me files I'll edit this post with them if there's no response between then and now.
Kind of why I'd like to be in a team project as the rest of the team is a motivation factor.


Today's progress; completed Nitro Archive format reader/writer. The cool thing is that DS ROM hacking tools can be used to inspect and modify the archive files produced by my tool. The next step is to write a reader for this archive format on the GBA.

The workflow is basically shove assets into a folder, then use the archiving tool to compile them all together (and compress stuff where possible), then that gets loaded into the GBA ROM. I can write a mechanism for modifying the ROM directly, but it would probably be smarter to compile the archive into a binary blob that's referenced in the source code itself.
This is getting pretty exciting.

AWlJBuh.gif
 
Xilef":284yi6mu said:
Kind of why I'd like to be in a team project as the rest of the team is a motivation factor.

Team project? Did you say team project? I've got a team waiting for you! Do you want to implement features that require digging through years of outdated C++? Do you want to port an ancient .NET program to macOS, Linux, and possibly consoles? If you want in-the-weeds coding tasks, I've got weed-obscured code for days.

And Amy, I get that was a joke. But seriously, isn't the UK a lot more lenient with the material that can be shown to all audiences?
 
After much, much struggling I managed to get DS archive format working on GBA with great efficiency: zero memory overhead, it's all read from ROM.
There's a quirk with the GBA where 16bit reads from ROM must be aligned to 16bit addresses. Had massive issue where I was trying to read a 16bit value across an odd boundary and it was resulting in:
if ( ( 3 * 8 ) == 0x32000003 ) // this statement is true

Which was just amazingly hard to debug. Eventually identified the issue when checking out the NARC in a hex editor, seeing the 3 was on an odd 16bit boundary and then changed it to two 8bit writes.

C:
<div class="c" id="{CB}" style="font-family: monospace;"><ol><span style="color: #993333;">auto assets = ( <span style="color: #993333;">const nitro::<span style="color: #202020;">archive * )res_assets; // res_assets is a ROM address

<span style="color: #b1b100;">if ( assets->is_good() == <span style="color: #000000; font-weight: bold;">false ) {

  // Bad archive header

}

 

<span style="color: #993333;">auto file = assets->open( "inner/deep.txt" );

<span style="color: #b1b100;">if ( file ) {

  <span style="color: #993333;">auto length = file->size();

  <span style="color: #993333;">auto data = assets->mmap( file ); // Get memory mapping ( const void * )

}
At some point I want to make a version of this archive reader that works on file streams, so an archive can be read from SD card without needing to load the entire thing into memory.

Next up is writing an image asset converter - which is made way easier due to using C# for writing the tools so all these file formats will work. GIF format would be interesting as that could directly convert into sprite animations, which would make creating attack/spell animations super easy.


Was thinking about the idea of writing a quick and dirty shitty software 3D renderer for drawing directly into sprite memory. The Tony Hawk GBA games used a 3D model for the player character - worked very well too - I wouldn't want to go down that route but I was thinking perhaps something like a save-point book could be an animated 3D model. Book model could slowly rotate and then when the player gets close it could open up and turn to face the player, perhaps some pages can flick past too. Would be very subtle in a 32x32 pixel canvas, but may be quite charming to see. If I were to do this it would be in the distance future, something like this is incredibly low priority compared to getting actual game content working.
 
Prototyping my "close encounters" battle idea. Doing this in the MV Battle System has it's up and downs. Within the database, Battlers can't be positioned lower than status window.
I should blur backgrounds out of focus for depth of field. At least with the arms. With legs and feet, the ground can be in focus, but I realize this presents a challenge to tie the battle background with different angles to certain monster-limbs. Especially if I want an ability to transfer a monster from an arm to a leg, I'll need the event to change the battle background along with the battler graphic. Of course I could do without backgrounds all together.
niyvlksi4kba90l6g.jpg
 
Joyous times! Finally gotten out of my rut for game dev, ideas are flowing, hours are being sunk into it. The days even feel better... it's strange. I just had to scrap some work due to less than legal software, so I'm back on the ol' Aseprite horse again, and starting some spriting, with a head! Early days, so won't post it right now.

Good to be back. :)
 
Xargeul.png


Quick update! (I weren't just here for April's Fools!) I know there's a load of issues with it, but i'm happy with it. Aseprite uses the Rotsprite algorithm for rotating, which looks pretty good I think, so I plan to just use these pieces and rotate them for animation frames. :)
 
I hadn't heard of Rotsprite before; looked it up and I'm quite impressed.

Discovered "Valkyrie Profile" on PlayStation 1: https://www.youtube.com/watch?v=HoGECwz8p1A
This game's 3D battle camera is exactly what I needed to see working, it would work on the GBA so I think this is the direction I'd go for the visual style of battles.

I've got DS palette format sorted out, just writing up a tool to convert some known palette formats to/from DS and then I'll make a GBA loader for that. One cool thing I added was the ability to gamma adjust palettes, which solves the problem of the very different screen brightness between GBA models and PC monitors. That removes the need to consider display technologies when producing art assets.

Being able to preview all this in someone else's asset viewer is really nice. I can quickly verify everything works without having to write a loader and pray the entire pipeline is correct.


Most of today was spent doing some client work, so progress on game development was pretty slow today.
 
I'm fighting with my compiler right now.

In UE3, you control most of the gameplay using quick-compiling UnrealScript. There is some deep-down functionality that has to be done in C++ and sometimes something has to be more performant and you can program that in C++. Then to get the C++ engine code to interact with UnrealScript, Epic games put together some tools that automatically generate code that links the two together. At the start of all the automatically generated header files, there's this warning: "DO NOT modify this manually! Edit the corresponding .uc files instead!"

There are good reasons why you're not supposed to edit those header files yourself. For one, I'm likely to screw something up. Next, all my C++ changes get overwritten every time I recompile my UnrealScript classes. And finally the dealbreaker: UnrealScript classes that are associated with C++ classes check to make sure that everything matches.

Everything would have worked fine if I could have just told UE3, "OK, thanks for autogenerating this file for me. I'll edit it manually from now on. Just trust me that I'll make sure everything works." But instead I'm in a very frustrating cycle where I feel like I'm blindly throwing code at UE3 to make it crap out the right .h file, with annoying long compile times preventing me from making faster progress.
 
Gedday folks! I didn't do April fools this year (or last iirc), was too busy giving my Mum the day of her life (her birth was awkwardly timed xD).

But goods news is I have news rather than nonsense as a result! Let's begin with two new music tracks, Koko's passive theme and her hero mode / battle theme.
http://www.youtube.com/watch?v=7yi99a48h50http://www.youtube.com/watch?v=ll6wfGAaNUw

I've also made some headway with the end of disk 1 cinematic, say hello to some adorable Tristy.
http://www.youtube.com/watch?v=r4gioNm7CfE
Had a lot of fun doing all those Tristy animations.

Xiie recently finished the sprite for Baron Jehkal "Splode".
vXBP5rk.png
u6fEBH8.png


And for now, that's about it!
 
Nothing to show this time, but I've been steadily working on my game, within Construct 3. It's a fun web app! It has this 'live preview' thing I've been using to test the game on mobile; it gives you a QR code (or an url) to put in, and it just loads like any other HTML5 app hosted on the net.

I made some animation (from the previous template), I was to originally animate within Aseprite, due to the RotSprite algorithm, but ultimately decided against it. Instead I'm animating within Spriter, which reminds me a lot of the Animate CC timeline with tweens. But the great thing is I'll be able to just switch out the graphics for a different human (clothes, etc) load up the Spriter file, and just export my previous animations, but with the different appearance. Which will save a lot of time! Also got movement from Keyboard, gamepad or touch inputs. Currently making the start of battle encounters, complete with camera pans, zooms, and fade outs / ins.
 
Non-stop coding all day to finally get to this stage:
http://www.youtube.com/watch?v=GcF5M9_RyH4
This is a 4bpp (16 colour) Tileset + Tilemap 256x256 background converted with my development tools.

The input was a 256x256 jpg image, the output was a 16x16 banked colour palette, a tile set of graphics and a tile map for the screen data. Outputs are in DS format, so they're viewable with DS ROM hacking tools.

This is how tile-sets will be converted for use on GBA. The tool also allows an input palette to be given, so rather than generating a poorly optimised palettes from the image you'd make your palette along with the tile-set graphics and use that.

It does a very, very good job of automatically generating a palette, but hand-optimised will always be 20x better. The optimisation basically quantises the image (reduces colour), splits it into 8x8 tiles, then packs the palettes of each tile as tightly as possible into the allotted number of banks (merging shared colours); if it fails then it further reduces the colour and repeats (uses a binary search to find the best colour reduction).

The automatic tile generation will merge duplicate tiles (including x/y mirrors) but it isn't very aggressive, so won't merge tiles that have 1 pixel difference.


The tile-map generation would be used for user-interface elements. It is not ideal at all for generating actual RPG style 2D map data (I'll have to use a custom format for this).

It's probably good for converting sprite-sheets too, but I'd need to test this out.


Next stage is writing a C++ API for managing the backgrounds in modes 0, 1 and 2. The GBA is weird in that the tile-set and tile-map share the same memory region, so I'll have to come up with a good C++ way to handle this.

Been looking at the MIDI music format recently.
 
Woo I've been busy lately!

I've commissioned a plugin (actually did about a month ago) from a good friend and reliable man of practise, and working together on getting it error free, basically it'll make animated busts work without the inconveniences or file-mass that SOULS script did, while also conveniently being a single plugin rather than two.
NYpMFIe.png

So I've lately been busy sorting out file structures, the pictures folder has dropped from over 2,400 files to just under 300.
CwJCy7j.png
hj8pf4N.png

And now a new folder called ani_bust contains the animating busts, albeit- with another nifty twist. Instead of over a thousand files, its now a sixth of the count, just over 300. So even together, the file count has been cut into a quarter of what it was.
LxpvYkZ.png

The faces folder has also jumped to being half as full, now that I don't need to make duplicate blanks for use with souls bust sequence script.

So, that's one thing!

I've personally begun working on really pruning unnecessary dialogue, adding flavor text and even rewriting scenes or part of them to be less jarring and more smooth. I've also been slowly but surely working on some optional events for Disk 1.
http://www.youtube.com/watch?v=5Q3FqC_X0H0
For what is a thirteen minutes long dialogue scene, there's a lot to it.

Yes I'm aware of the character duplicates on the same screen, that's been fixed since that recording.

On the music side, it's been incredibly productive! Four tracks have been composed since my last post! Lilac's themes are done. Playthings No More is done, and one of Sacreblu's themes is done, also!
http://www.youtube.com/watch?v=s31l0GBjdTYhttp://www.youtube.com/watch?v=2XdMMXluhC0
http://www.youtube.com/watch?v=l0R5p9goIaEhttp://www.youtube.com/watch?v=5eAKcfPS_pU
I love all of them! But if I absolutely HAD to choose a favorite, I'd go to with Sacreblu's boss theme.

I've also been implementing and working with sprites, making some simple animations and giving Yi a more imposing battle sprite.
Pep and Pexepe
jSb5O1g.png
m2clSy6.png

Fyori, this one is actually kinda old, but I just love the nimbus riding one so I felt the need to share!
nAt1gVg.png

For those wondering, yes- Fyori does have a nimbus she rides and has since Menagerie, in fact before it was scrapped it was the way you could fast travel between zones.

And Svoli's sprite was finally updated with the one Xiie made ages ago.
bJHCSBE.png


Last, but far from least-the battle sprite for Yi Hellrider.
dHTq5Vn.png

I'm hoping the after images will look epic as fuck in game.

Progress is on going!
 
http://www.youtube.com/watch?v=JiW_yZTn__g
My god this was annoying. I'm pretty sure there's still a weird bug related to memory pointer alignment somewhere here just waiting to break everything.
At one point I had a bug where nothing would draw on the screen unless some debug printing was going on.

Quality is poor due to a few things; this uses various 32bit fixed point types without caring about maintaining accuracy. HBlank interrupt is used for the scan-lines, so not only is everything 1 line too late it will also stretch out any lines that took too long to calculate for whatever reason.

What I want to do is make this into a special 3D matrix type where something akin to traditional OpenGL matrices can be used and then you can either pull out the correct result at a given scan-line or dump a series of matrices for each scan-line to be uploaded with HBlank direct memory access (fastest way to do the perspective 3D effect).
 
Struggled for a while to get enums to string but the workaround was using preprocessor to define a macro that takes in keys as arguments and puts them both into an enum and a char array.
Was my first time dealing with preprocessor stuff and it's actually really handy.

In all the initial design of the project is finally shaping up, but it's not quite there yet. I'm trying to make my core game loop as professional as possible but I feel that in the end I've just needlessly bloated it. Can't be too hard on myself though. We legit went from project one "In teams of 3 make a game." to project three "In teams of 1 make a game and link it to your own controller that you build yourself." with the exact same timeframe for both assignments.

Edit: Looking into preprocessor macros, looks like you can actually do some cool debug stuff with it! Though I doubt it's something I'll implement for my current game, I would definitely love to do it in a future project.
 
Wow suddenly from doing not much at all I'm doing quite something!

The big article of today's progress is me revising the maps I made for the Vahnus Estate to be more in line with the beautiful maps seen virtually everywhere fucking else in the game.

Please keep in mind i have enlarged these by 2x for demonstration purposes.

Bedrooms
tFu65HA.png

SVepen4.png

KJawgxC.png


Bathroom and Ominous Stairwell
zZZjZXw.png
otm9CRs.png


In other news, the plugin to maximize animated bust efficiency I requested is almost complete, there's only one minor cosmetic issue left that my programmer will be working on.

And beyond that, Jake got Sacreblu's character theme done, too.
http://www.youtube.com/watch?v=qZylOtm316w

Not the most wholesome of progress updates comparatively, but I think we've had enough page cloggers to let this one sit by not being quite as gamy as usual.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top