4x4x4 Challege - June 2021 - Head-to-Head Fruit Popper

A place to house devlogs of member’s projects.
User avatar
Gered
Posts: 51
Joined: Tue Feb 16, 2021 4:38 pm
Location: Toronto, Canada
Contact:

Re: 4x4x4 Challege - June 2021 - Head-to-Head Fruit Popper

Post by Gered »

Sirocco wrote: Wed Jun 23, 2021 9:59 pm The idea being to make ourselves explore strange, new game ideas, and have fun while doing it. So I'd say "mission accomplished." The overall level of challenge is up to each entrant. And if you finish with plenty of time left, you can always polish the entry, or take it further than just a mini-game.

I've been slacking, so if I finish my entry it'll be by the skin of my teeth :]
Yeah, you're right, of course. :) I keep getting that thought stuck in the back of my head "this is kinda overly simple, isn't it?" and then another voice responds "yeah, of course it is, the goal here is that I actually want to be able to finish something within the month!"

Even if I don't get the time to tweak things this week or next to explore additional game design ideas, due to not making it through the rest of my TODO list, I fully expect I will continue tweaking even beyond the time period of this challenge. :)

And I am also worried about finishing! Very worried!

While I think my core game-play loop is almost at a minimum-viable-product level, there is a lot of other stuff to tie it all together that needs to be done! The menus (main menu, game instructions / controls display, player fruit selection, level/arena selection, post-match results display), in-game status display (shouldn't be too bad), designing some non-test levels ...

Also some AI for a computer-controller player. And I'm betting I'll probably end up leaving that until the end and so it will be janky.

--------------------------------------

Some bad news unfortunately. This afternoon I raided my spare vintage/retro computer parts and slapped together a quick 386 PC so I could just see how the performance of the latest build of my game ran ... and, I didn't even get that far. The motherboard was POSTing, and now it is not. No beeps, nothing. Blah. I may debug this further at a later time, but I may just ignore 386 performance testing completely. If the motherboard is actually dead, it will take a bunch more time to diagnose and/or get a replacement. I have one other spare 386 motherboard, but it takes socketed 386 CPUs instead of the CPU being soldered on ... and I do not have any standalone 386 CPUs on hand to use.

Anyway, getting my game to be playable on a 386 wasn't exactly the most important requirement. ;)
User avatar
Gered
Posts: 51
Joined: Tue Feb 16, 2021 4:38 pm
Location: Toronto, Canada
Contact:

Re: 4x4x4 Challege - June 2021 - Head-to-Head Fruit Popper

Post by Gered »

Alright, well, after eating some dinner, I decided I couldn't let it go that easily as I was really curious how much of a performance hit this was going to be. Should've thought of this right away when the motherboard stopped POSTing with no beeps at all, but grabbed a spare AT PSU and janky-rebuilt it all on my dining room table.

Image

So... 24-25 FPS on a 386SX-40. Interesting. I have some thoughts, but this will not be a priority for the moment as my curiosity has now been satisfied.
User avatar
Gered
Posts: 51
Joined: Tue Feb 16, 2021 4:38 pm
Location: Toronto, Canada
Contact:

Re: 4x4x4 Challege - June 2021 - Head-to-Head Fruit Popper

Post by Gered »

Oh dear! Only 24 hours left. For me anyway. The deadline has been extended for others, but Monday the 5th is going to be a very, very, very long first day at a new job for me and it is incredibly unlikely I will feel like doing any coding when I get home. My new job is 99% remote, but as it is the first day, I need to be on site to pick up some stuff and it is a two hour drive one-way ... so 4-ish hours in the car for me on top of an 8-hour work day. :(

So ... only tomorrow (July 4th) left to finish things up!

Image

What have I been working on this past week?
  • Procrastinating
  • Improved font rendering in my GDlib "GDGFX" unit. Now supports variable-width fonts. Following this, I added two font assets to the project. One is essentially a copy of the Deluxe Paint II font and is variable width. The other is a smaller 5x5 font for rendering smaller things found in the game's HUD primarily, but may see a couple other uses.
  • A bit of extra pixeling work (current tile sheet can be seen here).
  • Took a (somewhat brief) stab at decoupling rendering and update logic. I was doing some really nasty things prior to this like using frame counts as a means of timing things like animations. lol. So, to get started, I needed to add custom IRQ8 (timer) handler support to my GDlib stuff including setting a higher timer frequency (whilst of course respecting the 18.2 hz expected original BIOS timer frequency). This support was easy enough, and Fruit Popper now has 1ms timer resolution. As well, now all timing (e.g. animations) are specified and counted in milliseconds. Much better. However, there were other silly issues I encountered due to my own kludgey coding that resulted in my not finishing up with decoupling rendering and update logic. So, while general timing of things is now improved, the game still kinda expects a solid 70hz. I won't be able to fix this tomorrow. It should be noted this is only a (big) problem on all 386 machines and only 486 machines that are not using VLB graphics cards. Overall this is not a super important issue considering it is 2021 and no one is likely to play this game on a real 386.
  • Mostly finished implementing core game mechanics. The main remaining thing is logic for fruit spawning maximums (this is a per-map limit). And continually spawning fruit randomly over time. All the necessary bits to implement this are there, I just need to add a "spawn new fruit" timer and call my already-good-to-go "SpawnRandomFruit" function. Easy.
  • Extracted my test map out to a separate file with a dumb utility that I will use to create other maps tomorrow. The game now loads from a file and has much more reasonable support for initializing a new match when loading a map file (as compared to how it was before).
What is left to be done?
  • Design at least a few more levels.
  • End the match when the timer hits zero.
  • 'Pause' menu when ESC is pressed during the match that just allows two options: resume and exit
  • Title screen
  • Main menu
  • Level selection screen
  • Fruit selection screen
  • Help/Instructions screen
The above is my absolute bare-minimum todo list. There is a TON more I would like to do. But if I can get the above done by end of day tomorrow, I will be mostly happy.

Probably the most significant omission from my compo submission tomorrow will be a lack of 1-player mode with an AI-controller second player. This is really unfortunate. Perhaps if I had procrastinated less .... ? :roll:

The problem here is that this will take me more than a little time to do. To do the AI how I would really like, I will definitely need something with some level of path-finding in it. Something like A* would seem like the obvious starting point here. But I need to re-read up on this and re-learn it all over again. lol. I don't recall it being difficult or anything, but it's not something I'm just going to whip up in a few hours. No chance it gets done within the next 24 hours combined with the rest of my TODO list.

But, it is the first thing I will be adding during the course of this week! Not everyone has a second person around to play with, I know I certainly don't .... heh.



Current contents of my project's source tree.
User avatar
Gered
Posts: 51
Joined: Tue Feb 16, 2021 4:38 pm
Location: Toronto, Canada
Contact:

Re: 4x4x4 Challege - June 2021 - Head-to-Head Fruit Popper

Post by Gered »

Alright! I am "done". Quotes because it'll never really be done in my mind, but as far as this month-long compo is concerned, it is submission-worthy I think!

'Twas a long day of building menus and selection screens and stringing it all together. I used a DOS-compatible ArtPad tablet that I bought a couple years ago to draw the "bubbly-letter" title images you see in the various screenshots below. I had something much more elaborate planned for these menu screens, but unfortunately I just don't have time for it now. In particular, the "fruit selection" just being a coin-toss instead of any actual player "selection" is a bit annoying to me, but it was the fastest way to get this done. I can take care of all these things I didn't like later on anyway. :-)

Full download and source here. Includes pre-built executables (run fruitpop.exe). Unfortunately, I have not had time to really test in DOSbox. I assume it will work. I will test it myself tomorrow. Right now, I am wiped and want to just get this all posted so I can go to sleep! ;)

Just another reminder! There is currently no single-player mode! That is my priority #1 this week, but there just wasn't enough time to get it in here for today's submission.

I will record a gameplay video tomorrow evening too and post it here.

Image
Image
Image
Image
Image
Image
Image
User avatar
carra
Posts: 163
Joined: Thu May 13, 2021 10:39 am

Re: 4x4x4 Challege - June 2021 - Head-to-Head Fruit Popper

Post by carra »

Looks so cute. Just the fact that you finished a small DOS game in 2021 makes this great
User avatar
Gered
Posts: 51
Joined: Tue Feb 16, 2021 4:38 pm
Location: Toronto, Canada
Contact:

Re: 4x4x4 Challege - June 2021 - Head-to-Head Fruit Popper

Post by Gered »

Wrote a lengthy, rambling, sort-of-post-mortem of this project over at my site.
User avatar
Sirocco
Site Admin
Posts: 806
Joined: Fri Feb 12, 2021 10:25 pm
Location: Outer Demoscenia
Contact:

Re: 4x4x4 Challege - June 2021 - Head-to-Head Fruit Popper

Post by Sirocco »

I too slacked hard. I finally opened DosBox and gave this a spin. It works perfectly under Windows 10 with the latest version of DosBox. This is what I like to see, and I consider it a great entry. It takes a simple idea from start to finish, and has some nice polish in the form of menus, tutorials, and animations. You even have multiple maps you can select from :D

Congrats on the fine work!
Post Reply