QB64.org Forum
Active Forums => Programs => Topic started by: dbox on December 14, 2021, 01:28:12 pm
-
Hi All, I wanted to share a project I've been working on for a bit. I know there are several folks here with a lot of gaming experience and I would love some feedback.
In the process of working on several 2d game projects I was noticing that I was needing to write a lot of game "plumbing" for each project. I wanted to see if it would be possible to create a generic game API and engine for QB64 that could support a number of different types of 2D games (platformers, top down, isometric strategy, etc.). GX is the result of this effort so far.
The goal here is to create a flexible, event-based game engine. Based on your game requirements you can use as much or as little of it as you need, but the engine will take care of the main tasks of managing the game loop and screen buffering for the display. The current alpha version has support for:
- Scene (viewport) management
- Entity (sprite) management
- Tiled map creation and management - Including a world/map editor (built with Inform)
- Bitmap font support
- Basic collision detection
- Basic physics/gravity
- Device input management
- Keyboard, mouse, and game controller
- Interactive debugging
I've made an effort to document the project here:
https://github.com/boxgaming/gx/wiki (https://github.com/boxgaming/gx/wiki)
There are several samples included in the project and even a tutorial here:
https://github.com/boxgaming/gx/wiki/Tutorial (https://github.com/boxgaming/gx/wiki/Tutorial)
You can download the pre-release here:
https://github.com/boxgaming/gx/releases (https://github.com/boxgaming/gx/releases)
I'm still in the process of documenting the API, so not all of the calls are there yet, but there is a good start. I've tried to make the style similar to the QB64 wiki.
Additionally, I'm working on a export to web feature that I will be committing in subsequent updates that will convert a GX-based QB64 game into a canvas-based javascript game that can run in the browser. It's not quite ready for primetime yet but I've included a screenshot of where I've converted one of the sample projects.
I would appreciate any and all feedback.
- dbox
-
Whoa! I need to give this a more careful look, but from skimming (and looking at the screenshot): whoa!
-
Hey dbox - this looks promising and I like how professional the whole thing comes off. Maybe my question will be evident from the documentation - but for the sake of anyone else with this question who is equally as lazy as I -
Where in relaton to my qb64 directory should the GX folder live, once unzipped? Next-to, inside-of, the qb64 directory? I got physics.bas to run (or at least go to run-time without error) but the other demos don't like where the folder lives. Any tips? (I downloaded from Releases.)
-
Hey @STxAxTIC, it really shouldn't matter where in relation to the QB64 you unzip the gx folder. However, since each sample has assets that are referenced by relative paths the exe needs to be in the project folder. Do you by chance not use the option to generate the Exe in the source folder?
-
Oh yup, that did it - I didnt check that option, runs brilliantly now.
-
I am usually not one for game things and I don't really know how to make games myself but I saw the keyword "API". I love API. I will look over your code when I'm feeling better and see what I can do with it.
-
In addition to just general feedback, if you've had a chance to run the samples I'd love to hear how the performance was for you.
-
I run QB64 with Linux Mint 20.4 and ran your samples. Horse was very smooth with no lag whatsoever. Collision and overworld also performed very well. Although I am not a fan of overworld-type games, I thought the layout, movement and graphics were very nice. The only thing missing was invading aliens and the ability to blow them away... Moo Ha Ha...
Overall: I think you have done a great job and will be looking forward to further updates. Well done!
J
-
Hi all! I just published a new release of GX (0.3.0-alpha) with some fun new content!
This release has the first working version of the export to web feature. At present it can convert 3 of the sample applications (overworld, horse, and collision) to a working web version (screenshot attached). If you're interested to see it in action grab the latest release here:
https://github.com/boxgaming/gx/releases (https://github.com/boxgaming/gx/releases)
To try it out:
- Open a command line window and cd to the gx/tools directory.
- Build the tools with the build.bat or build.sh depending on what OS you are on.
- Run the gx2web converter (ex: ./gx2web ../samples/overworld/overworld.bas). The resulting web assets will be placed into an output folder in the dist directory.
You can test out the results by running the included lightweight webserver (thanks @luke !) and opening a new browser window to the output location (ex: http://localhost:8080/dist/overworld/index.html).
I've also added the Christmas-themed platformer game that I submitted for the holiday season code sampler to the samples. You can also get it standalone here:
https://www.qb64.org/forum/index.php?topic=4454.msg139230#msg139230 (https://www.qb64.org/forum/index.php?topic=4454.msg139230#msg139230)
-
Fun GX project update... the export to web feature of GX is now able to port a pretty functioning game that I was able to upload to itch.io:
https://boxgm.itch.io/sleighless (https://boxgm.itch.io/sleighless)
As I shared with the folks that were on Discord earlier, this was converted from QB64 source code (santa.bas) with no manual updates to the resulting html/js!
This code is up on the github repository and will be included in the next release.
-
Hi All! Here's another GX project update. Had some discussions on Discord around whether the GX QB64-to-JS could be used for vanilla QB64 programs in addition to those that use the game engine API. So I put together a POC using @FillippeHeitor 's laser tree animation as a test case:
https://qb64forum.alephc.xyz/index.php?topic=4454.msg139043#msg139043
The results are posted up on itch.io:
https://boxgm.itch.io/qb2js
-
Hello All,
There's a new release of GX available. You can find it here:
https://github.com/boxgaming/gx/releases/tag/v0.4.0-alpha (https://github.com/boxgaming/gx/releases/tag/v0.4.0-alpha)
This release has been focused on updates to the Publish to Web feature that allows you to convert your GX (as well as some vanilla QB64) programs to a web-native version (html/js). The number of supported keywords has expanded as well as adding support for multi-dimensional arrays. Thanks to everyone on Discord who has tested the prototypes and given me great suggestions on QB64 sample programs to convert and feedback on the work to date.
You can read more about it the feature here:
https://github.com/boxgaming/gx/wiki/Publish-to-Web (https://github.com/boxgaming/gx/wiki/Publish-to-Web)
https://github.com/boxgaming/gx/wiki/Supported-Keywords (https://github.com/boxgaming/gx/wiki/Supported-Keywords)
Another exiting feature included in this release is the web development mode. Once your game has been converted to the web version you can make tweaks to it and test it out right in the browser (screenshot attached).
Let me know if you get a chance to check it out!