buzzbuzz20xx

  • 24 days ago
  • Joined Feb 18, 2024
  • 2 best answers

  • The gameplay is very juicy now and there's awesome Godot bloom lighting.


  • ---PLAY IT HERE IN YOUR BROWSER---
    I've created a very simple prototype for a side scrolling 2 Player fighting game that can be played with just one keyboard, Very reminiscent of old flash games that we played after CS class in elementary school.

    The issue is that I don't really have anyone to play-test the game with ! So I need your help to play it with someone else, Do the characters control well ? Is it fun to play ? where do you see this project going ?

    Thank you in advance for the feedback.


  • I am very pleased to finally release the epic third person shooter game "Happyboo Vs. The Bats !" , It is the long awaited squeal to the best selling game of all time "Happyboo Vs. The Slimes" , The Happyboo duology has been a critical and financial hit, It has changed the lives of many people.

    Anyway try Happyboo Vs. The Bats and tell me your thoughts.

    (This post is meant to be humorous, Nobody knows what the heck a 'Happyboo' is, But Please do try the new game lol ).

    And huge thanks to GDquest on Youtube, This is pretty much just a fork of their game lol.

  • Erich_L Glad you enjoyed the new version !

    The intent is for this to be an open source project where people can create their own battles and heros in the Godot 4 editor without code.

    But now that you mention it...It would be an interesting idea for players to be able to create and share heros like you described...

  • Sup everyone! I polished the game more and added more abilities to the heros.

    The game can also be played with a mouse now, And it will also work perfectly fine on mobile devices.

    I also added a lot of documentation to the source code, I hope that fellow programmers can benefit from it, I tried to make the source code as readable and efficient as possible.

    It would be awesome to see people create their own battles and heros in this framework.

    • This is so awesome and well done, Keep going 💯

    • Erich_L Thanks a lot for the feedback !

      Erich_L I did hate not being able to click on the menu buttons (a lot).

      I see, I agree it would make a lot more sense to also support mouse controls.

      Erich_L Making this kind of game seems intimidating- ideally you'd want really nice animations for each character and enemy for each ability. That in itself would seem like a huge hurdle.

      Yes I agree, Also the animations that you see in-game aren't actually made by me but are free assets from itch.io .

      Erich_L Also, as I've learned recently, it doesn't take too much time to play around with panels in the UI to make better looking buttons. I'd recommend sticking with square corners which will allow you to put a textureRect or ColorRect inside them and color them with a shader or texture or both.

      Yeah Godot 4's button themes are really fun to play around with.

    • Tomcat Thanks for the feedback !

      Tomcat It may be enough to put the characters' names on the field, next to their health.

      Yes, Sounds like a quick and effective fix !

    • davidicus Thanks a lot for taking the time to write this detailed reply.

      davidicus i didn't immediately connect the colors to the heroes

      Yes, I should really make it so that there's a pointer that points to the current ally or enemy being selected.

      davidicus i prefer when heroes stop attacking once all the enemies are defeated

      Yes I'll also need to implement this.

      davidicus would be nice to be able to strategize a bit with formation or something

      That would be neat but I think it's beyond the scope of this project.

      davidicus i couldn't determine if there was logic to the enemies' target selection

      The enemies randomly choose an ally, There's no bias.

      davidicus would it be up to the creator to name the eyes (in this case) differently

      I'm gonna make it so that identical enemies will be automatically named differently (eye 1, eye 2, eye 3).

      • PLAY A DEMO HERE IN YOUR BROWSER DIRECTLY

        Have you ever wanted to create your own turn based JRPG battle with your own original characters that have their own unique moves ? well you will be able to do that soon and without writing a single line of code ! This project uses custom resources for pretty much every piece of data, The party members stats, Animations, Attacks, Spells, Items, UI themes and more all use resources, Creating your own battles will be a breeze !

        Right now I need feedback for the actual game play of the battles, Please play the demo and tell me what you think, Also if you want to see the WIP source code then here it is.

        • DaveTheCoder Yeah thanks I already solved the issue, We wanna execute about 500 instructions per second.

        • buzzbuzz20xx Alright someone on stack exchange gave me the solution:

          var time_accumulator = 0.0
          
          func _process(delta: float) -> void:
              time_accumulator += delta
              while time_accumulator >= (1.0 / instruction_rate):
                  execute_opcode()
                  program_counter += 2  # Each Chip-8 instruction is 2 bytes
                  time_accumulator -= (1.0 / instruction_rate)
              
              queue_redraw()

          More detailed explanations can be found here and here.

        • I'm making an emulator/interpreter for an old console called the chip-8 In Godot 4.3 stable, It's going really good so far, I basically just load an external ROM into a virtual RAM (8BitPackedArray) and execute it's each operations code like this for example

          0x3000: # 1st nibble is '3':
          		# 3XNN: Skips the next instruction if VX equals NN.
          		if registers[opcode >> 8 & 0x0F] == opcode & 0x00FF:
          			program_counter += 2

          My current issue is that I wanna run the emulator at the same speed as the OG console, I first tried having a for loop in the _ready() function that executes all the opcodes, But it ended up running everything before the game even starts.

          So next I tried executing the opcodes in the _process() function, And it worked but it was very slow compared to how the fast the console is meant to run, So I wanted to increase how many times _process() would run every second but I couldn't figure out how, So I came up with a funny solution; have a for loop run 10 times in _process(), This should make _process() run 10 times faster, And yeah it worked but this solution seems very dangerous ? I mean How is this gonna run consistently ? Is it gonna run at the same rate on my PC and also stronger/weaker PCs ? And also when there's movement happening the frame rate dropped to 45 ?

          func _process(delta: float) -> void:
          		for i: int in range(10):
          			execute_opcode()
          			program_counter += 2
          		queue_redraw()

          So next I tried using _physics_process(), It's meant to run more consistently and I managed to change how often it's run by increasing the "physics tics per second" option, I tried increasing from 60 to 1000 but my game is still not running fast enough.

          # Even if 'physics tics per second' is 1000: It's still too slow.
          func _physics_process(delta: float) -> void:
          		execute_opcode()
          		program_counter += 2
          		queue_redraw()

          Next I tried returning the "physics tics per second" back to 60, But I added a for loop that would run 5 times, But it resulted in the game being very choppy and slow:

          # Very choppy and slow
          func _physics_process(delta: float) -> void:
          	for i: int in range(5):
          		execute_opcode()
          		program_counter += 2
          	queue_redraw()

          So yeah I guess I'm confused and don't know how to solve this issue.

          • buzzbuzz20xx replied to this.
          • buzzbuzz20xx Alright someone on stack exchange gave me the solution:

            var time_accumulator = 0.0
            
            func _process(delta: float) -> void:
                time_accumulator += delta
                while time_accumulator >= (1.0 / instruction_rate):
                    execute_opcode()
                    program_counter += 2  # Each Chip-8 instruction is 2 bytes
                    time_accumulator -= (1.0 / instruction_rate)
                
                queue_redraw()

            More detailed explanations can be found here and here.

          • housatic Thanks a ton for the advice, I'll keep it all in mind.

          • Yo guys I uploaded a new demo !

            Now there's 2 bosses, Menus, More polish, Screen transitions, Better controls, way less flashing lights.

            Play it on the same link here

            Please tell me your thoughts.

            • xyz replied to this.
            • Erich_L thanks for playing the game and also writing this detailed reply!

              I'll keep these points in mind.

            • PeterPM Thank you very much for taking the time to not only play the game but also type this very thought out comment.

              Yes, you are absolutely right about it needing more content or "progression" As you call it, I have a ton of cool ideas for more bosses, This was simply a proof of concept type of demo, And the reason why I gave the player 50 HP instead of 5 is because I might make different types of bullets deal different amounts of damage (10, 20, 50 ?!).

            • More on that last paragraph: Compiled GDscript would be awesome, People constantly complain that GDscript is slow (it's not) and resort to C#/C++ for game dev, It would be awesome if there was an official (or unofficial) alternative implemention of GDscript that is compiled and statically typed