Jump to content
IGNORED

Final Assault - new game by GMG


globe

Recommended Posts

3 hours ago, Heaven/TQA said:

how long is your actual "line of sight"

The first, completely failed grid tile sized check had 14x14 resolution (16x16 tiles map segment with wall along the outer edge where no player or enemy can enter)

Second, much slower, partially failed check had 448x448 resolution (one grid tile is subdivided in 32x32 smaller grid for player / enemy movement)

Second check 'version B' had 224x224 resolution, you can probably guess why.

Currently used shoot-me-from-behind-the-wall-baby check uses 56x56 resolution.

 

3 hours ago, Heaven/TQA said:

as you mentioned you had a look at the fast line drawing thread. but that was highres line drawing all over the screen while your "use case" is far less?

For the first and the last, yes.

For the second, that I think could get near perfect results it's pretty comparable if you look at the resolution.

Sure I don't have to deal with bit operations, colors and other 'real drawing' stuff but I have some extra checking to do instead. 

 

As for 'all over the screen' part. It's not really that different, both player and enemies can run all over the map.

One thing is significantly different though, my 'canvas' has walls, so the more walls there are the shorter the LoS lines could be before they hit a wall.

Link to comment
Share on other sites

18 minutes ago, popmilo said:

It's similar to Permadi tutorial as it goes from edge to edge of grid cells, but math is little different (easier).

Thank you, I'll definitely check it.

Easier math sounds faster, therefore GOOD:)

 

Though if you look at Permadi's tutorial chapter 7

https://permadi.com/1996/05/ray-casting-tutorial-7/

''To find walls, we need to check any grid intersection points that are encountered by the ray; and see if there is a wall on the grid or not. The best way is to check for horizontal and vertical intersections separately. When there is a wall on either a vertical or a horizontal intersection, the checking stops. The distance to both intersection points is then compared, and the closer distance is chosen.''

 

I found a way to do this with only one check for intersections instead of two, one multiplication (for the distance calculation) and no distance comparison (there's nothing to compare) which speeds things up significantly.

Not going to spill my beans (yet) but as far as performance goes drawing takes roughly 49% of CPU time but raycasting only 27% (all of this assuming I didn't mess up while using ALTIRRA's Profiler which is possible)

 

 

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

After all the proof-of-concept demo engines, there's finally a true raycasting game for the Atari 8-bit! Very cool :)

 

A few questions:

 

- how many subtiles are there where a player can "stand"? i.e. strafe left and right, and moving forwards and backwards within one map tile.

 

- how many steps are there between 0 degrees and turning to 90 degrees?

 

Wasn't sure after reading the previous posts, so I thought I'd ask specifically :)

Edited by ivop
  • Like 1
Link to comment
Share on other sites

1 hour ago, globe said:

The first, completely failed grid tile sized check had 14x14 resolution (16x16 tiles map segment with wall along the outer edge where no player or enemy can enter)

Second, much slower, partially failed check had 448x448 resolution (one grid tile is subdivided in 32x32 smaller grid for player / enemy movement)

Second check 'version B' had 224x224 resolution, you can probably guess why.

Currently used shoot-me-from-behind-the-wall-baby check uses 56x56 resolution.

 

For the first and the last, yes.

For the second, that I think could get near perfect results it's pretty comparable if you look at the resolution.

Sure I don't have to deal with bit operations, colors and other 'real drawing' stuff but I have some extra checking to do instead. 

 

As for 'all over the screen' part. It's not really that different, both player and enemies can run all over the map.

One thing is significantly different though, my 'canvas' has walls, so the more walls there are the shorter the LoS lines could be before they hit a wall.

ok. understood... with your subdivision of squares...

  • Like 1
Link to comment
Share on other sites

1 hour ago, ivop said:

 

- how many subtiles are there where a player can "stand"? i.e. strafe left and right, and moving forwards and backwards within one map tile.

One grid tile is divided to 32x32 subtiles. You can't always go the full range though, there's some limit how close to a wall you can get, and there's limit for enemies too because when they were licking the walls, clipping algorithm kicked in making them look weird - partially sticking out of the wall .

1 hour ago, ivop said:

how many steps are there between 0 degrees and turning to 90 degrees?

32

I think I messed up in earlier post and said that full turn is 256 steps, that's wrong.

Full turn is 128 steps (was 64 at the beginning)

The 256 steps for 360 degrees is from the raycaster.

  • Thanks 2
Link to comment
Share on other sites

17 hours ago, popmilo said:

@globe guess what me and @Heaven/TQA are mentioning is dda algorithm for grid based traversal of space, something like this (similar to one on lodev.org):

https://www.researchgate.net/figure/Ray-casting-DDA-algorithm-illustrated-in-two-dimensions-Rays-are-cast-through-a_fig2_329503247

 

It's similar to Permadi tutorial as it goes from edge to edge of grid cells, but math is little different (easier).

 

After watching the video... this is almost exactly what I'm doing, except for the incremental length calculation (I do that at the end after both start and end points are known)

 

 

On 11/11/2021 at 10:16 AM, Beeblebrox said:

Honestly can't wait to see 1.1 release as and when. 

Don't expect too much. 1.1 will be bug fix and 'cosmetic enhancements' (darker floor) release without changes to controls and unlikely changes to things like line of sight checking (maybe if I find a way to 'fix' it that won't bloat the routine)

All the other enhancements talked about in this thread will be probably implemented in some future version for machines with larger RAM.

  • Like 3
Link to comment
Share on other sites

29 minutes ago, globe said:

All the other enhancements talked about in this thread will be probably implemented in some future version for machines with larger RAM.

Tell them the truth, You don't have time because You work on porting.... ?

 

1945332671_Snmkaobrazovky2021-11-12o12_00_06.thumb.png.cab6429ee1b53c7cb79d3c0161a197d9.png1365871529_Snmkaobrazovky2021-11-12o11_49_26.thumb.png.14165ebb4883b0ed85de237edd548f7e.png

Edited by goldy/gmg aka lopez453
  • Like 1
  • Haha 3
Link to comment
Share on other sites

Wow, thanks @globe for this fantastic game - and it's so incredible fast. I like especially the different type of weapons. It's also good to see decriptions of items, objects and weapons in the intro. And the bit flinging gun is a nice idea - took me a bit to see how it works.

 

It's a bit difficult to see if there is a way to the left/right or not. Thus for the floor discussion, I would prefer a dark shaded floor without dithering as in the XEX in Post #128.

 

P.S.: When searching through the code to replace key "Z" (for playing in Altirra with German keyboard where "Y" and "Z" are swapped) I found some kind of "immortal mode" ...

 

  • Like 3
Link to comment
Share on other sites

4 hours ago, StefanD said:

 

P.S.: When searching through the code to replace key "Z" (for playing in Altirra with German keyboard where "Y" and "Z" are swapped) I found some kind of "immortal mode" ...

Nice one.

Kind of unexpected it was discovered this way, not from Goldy's hint.

 

 

 

 

  • Like 2
Link to comment
Share on other sites

I spent some time today with this one. I'm a little late to the party, since I only visit the A8 forum about 3 times a year--but wow, did I ever luck out this time. I'm floored by how well this runs, and the level of polish everywhere. Though, I've clearly got some more enemy memorizing to do.

 

 

Edited by Reaperman
  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

I'm glad it's getting buzz - it's absolutely one of my favourite releases of the year, and I've not had a chance to read the rest of the thread properly, but the engineering behind it simply blows my mind.

 

Had a lot of fun putting a video together exploring it in detail too, in case y'all didn't need any more convincing ;)

 

(Do hope there's plans to use the engine in some other games, it'd be a shame to see it used for just the one title!)

 

 

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

6 hours ago, robc said:

I'm glad it's getting buzz - it's absolutely one of my favourite releases of the year, and I've not had a chance to read the rest of the thread properly, but the engineering behind it simply blows my mind.

Thank you for the great review, I'm glad you liked it.

 

6 hours ago, robc said:

(Do hope there's plans to use the engine in some other games, it'd be a shame to see it used for just the one title!)

6 hours ago, Mclaneinc said:

I'd imagine with an engine like that, it will get more outings..

That's the plan, though it's only in early stages so it will take a while.

This time I'm not going for complete 'radio silence' throughout the whole development so once I have something more specific to show, I'll share.

  • Like 3
  • Thanks 2
Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...
22 hours ago, eegad said:

 I only wish there was a "casual" gameplay option so I could get through more of the level. I'm always dead in about 2 minutes. 

Since I had a bit of free time during this hectic end of the year, ver.1.1 will be ready in a day or two (hopefully) and there will be difficulty adjustments besides the cosmetics (floor/celing) and couple of bug fixes.

 

  • Like 5
  • Thanks 1
Link to comment
Share on other sites

Here's Final Assault version 1.1

 

Zip is in the Download section: https://atari8.dev/final_assault/

 

Bug fix version with some cosmetic and game play adjustments.

 

Changes:

 

- fixed 'ballance' misspelling in intro text

- fixed hard-coded subroutine call in intro pointing at 3 BRK instructions which made the game stop in emulators with 'Stop on BRK' setting enabled

- ceiling and floor in game are darker and without dithering for easier orientation

- music in intro now plays at correct speed on NTSC systems
       
- gameplay adjustments: - time interval between player being noticed by enemy and enemy attacking lengthened from 2.5 sec. to 6.5 sec.
                                       - weapon cadence of flying sentry bot and boss bot slowed down by 25%
                                       - weapon cadence of armored sentry bot slowed down by 50%

 

So all in all nothing big but it should make the game somewhat easier and a bit less visually confusing.

 

Spoiler

If it's not enough or someone just wants to look around without stress, you can type IDDQD in game for immortality, though trophies and clear time counter will be disabled if you do.

 

Thank you all for your support, for pointing out the bugs and for improvement suggestions.

 

Only some of them made it in Final Assault ver.1.1 because of space constrains but they're not forgotten and will be used in future projects.

 

 

There's also one more xex file in the Final Assault 1.1.zip package:

 

Final Assault 1.1 SNACK.xex

 

This is a build specifically made for those lucky Atarians who got their hands on Irgendwer's - SNACK - SNES Atari Controller Kit and for those who plan to.

I didn't manage to cram in all the previous controls + SNACK together, so this xex is specifically for SNACK controllers and won't work with normal joysticks (there's Final Assault 1.1.xex for that).

 

Here's the controller layout:

 

1957540592_FinalAssault1.1SNACK-SNACKEnhancedcontrols.thumb.png.4fde8dfa4df446af1cc99afb0754afc1.png

 

The whole game can be finished without touching the keyboard.

Don't forget to switch to Enhanced mode and have fun.

 

Happy New Year!

 

Globe/GMG

  • Like 12
  • Thanks 8
Link to comment
Share on other sites

12 hours ago, Philsan said:

I have to say that with SNES controller gameplay is greatly enhanced.

Yeah, joystick isn't ideal for this kind of game, with gamepad the controls are easier to handle and there's plenty of buttons for everything.

Together with SNACK ability to work like Joy2B+ in Classic mode and run all 'normal' games and all hacked Joy2B+ games, it's a pretty good bang for the buck.

  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...

 @globe Holy **** the SNACK adapter with a SNES controller on FA1.1 is good!!:lust: Received it in the post yesterday, (big thanks to @Irgendwer ), and just powered it up this morning with FA 1.1 enhanced. 

 

After a minute or to getting used to a small joypad again, (SNES controller being very different from a Jag controller!), and after I'd worked out how to get the adapter LED to turn red (Enhanced mode), I played FA and lasted waaaay longer than normal with Joystick controls+kb. Honestly it makes such a huge difference to the gameplay! No more scrambling to reach the keyboard to change weapons or look at the map. (TBH a lot of FA deaths in my experience can be atributed to the former). 

 

Of course the enemy response tweaks implemented in ver 1.1 probably help the gameplay experience over ver 1.0 but still - this rocks!:lust:  The novelty of running a joypad on my 800XL is also very satisfying.

 

@globe  There is one button on the SNES (green Y button) that isn't used for anything in FA currently - a pause button jumps to mind - being able to pause the game would be great.:grin:  I guess some might say it'll quite possibly take the tension out of gameplay if at a nerve wracking moment you could potentially pause to collect thoughts (or make a cuppa coffee) - but I still think it could be helpful.

 

Edit: Alternatively Y could be used to cycle through the weapon select the other way - so B cycles right through weapons selection, and Y cycles left. Just a thought.

 

Gonna have a proper FA session later this weekend as well as testing other games with the joypad, but just wanted to let ya'll know IMHO it's literally a game changer, especially for FPS engines :grin:  I really hope we see more FPS raycasting games on the A8 in months and years to come, all taking advantage of joypads.:)

 

Edited by Beeblebrox
  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...