View Posts for Software Engineering

  • Rapier 2D Physics Engine Needs More Blog Posts

    |
    Updated at

    Without Bevy Game Engine especially. Yeah, I'm using rust to build a game. 💀💀💀

    Most people would not write Rust especially for a multiplayer game server! I'm taking on the challenge to do it twice, so let's see if I can release at least one real time 2D multiplayer game this year on mobile.

    After about a week of using Rust to make a game, I'm at the point where I can run the server with spawn-able game loops, communication between game objects in that loop, game object create/destroy/etc. and physics, collisi...

  • Abandoning NodeJS for the Most Part For Rust

    |
    Updated at

    I spent today just trying to use nunjucks for serving some templated html. Turns out nunjucks among other templating libraries are fucking broken because of this rtarded split between cjs and mjs.

    Even though I have a custom toolchain to deal with this sht, typescript made some changes that broke the server portion. The mjs files can't import nunjucks. This isn't the first time sht has broken either hence why the toolchain exists.

    I was like ok since ths is broken time to explore. So I explored leptos, but th...

  • Godot 4, Mobile Issues

    |
    Updated at

    Log of issues I've run into with Godot on iOS or Android.

    1. High Energy Usage when displaying UI Control Nodes: https://github.com/godotengine/godot/issues/78278
      - This one has been a problem for a long time. It's nuts how staying on a main menu with nothing changing will increase GPU usage draining the battery faster than in game!
    2. iOS Game Engine Crash when Timer goes off: https://github.com/godotengine/godot/issues/86477

      - This one is replicated on any Godot 4 version for iOS.
  • Godot 4, 2D Mobile Optimization

    |
    Updated at

    It's not easy to optimize and the information out there isn't too great. There's just not much resources on optimizing Godot for mobile devices out there in general. Your mileage may vary.

    Viewport scaling - Takes less GPU resources therefore energy than canvas_items. You can test it on an iOS device yourself. It makes a BIG difference for my game.

    Expanded Aspect Ratio - Use a square resolution to keep same resolution when in landscape or portrait. Expanded will scale that box accordingly. It is up to you to...

  • Exporting a Godot Game for Android

    |
    Updated at

    If you've tried to export a Godot game for Android target, you most likely ran into errors when you checked Gradle box like "Unable to locate a Java Runtime" or whatever. Annoying since there is no logs of the commands run nor environment variables.

    Follow instructions here: https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_android.html Come back when you reached the error.

    I use Mac OS and opening Godot from Applications folder will not contain a JAVA_HOME variable.

    Open a terminal and jus...

  • JFXR as a Native App with Electron

    |
    Updated at

    Source Code: https://github.com/normano/jfxr

    I forked JFXR and added electron support so one can open it as a native application.

    JFXR is supposedly a spiritual successor to BFXR which one could use to create sound effects using waveform attributes and patterns. It's good stuff. While one could access JFXR online, there's no guarantee that will always be accessible. With this someone could put it on itch.io, but again no guarantee itch.io won't go to sh*t later. One could build the source code and just run th...

  • Persistence in Games is not Persistence in Applications

    |
    Updated at

    In applications, specifically web apps when a user performs an action such as pushing an item into a shopping cart or sending a message on a forum, there is an immediate need to persist the data into a database. Meanwhile, an online game has many actions occurring such as player movement. You can't persist all of those movements.

    An online game like an MMO for instance has to treat most interactions as ephemeral aka in store in RAM. One needs to change their mindset on the idea that not everything needs to b...

  • Learned SwiftUI and Uploaded an iPhone and Apple Watch App to the App Store.

    |
    Updated at

    I already knew Objective-C which I liked. I can't say the same for Swift though. I also decided to hunker down and build a smolll app with it for iPhone and Apple Watch.

    Swift looks like it was inspired more by Objective C and Rust. Named arguments in a specific order for instance? Objective C. The little auto complete lookup in XCode still shitty. Multiple function signatures for same function name? Objective C. It has more static analysis like Rust which keeps you from running bad code. Objective C would l...

  • Save Game Data Integrity Checking Idea

    |
    Updated at

    I've wondered how one would store data for games in a save/load system in Godot with little to no encryption. I think the best way is to create interdependency in the data structures, so if one part of the save file is tampered with then the whole thing is invalid.

    Essentially, is there a way to create a checksum from multiple checksums. A Merkle Tree fits the role of calculating a checksum/hash from all component data. You could create a merkle tree for each category of data you want to save such as invento...

  • Godot Auto tiling

    |
    Updated at

    I've been learning Godot because it great to learn new things and because for once making 2d games for all platforms (mobile, web, desktop, tv, console) is reachable. Godot is a great game engine with a great scene editor. Now one of the more confusing concepts is Auto tiling.

    Obviously it is not so confusing now. Godot 3 had what I thought was good labeling (bitmask). Godot 4's new terrains label and feature is odd to me as it doesn't reference bitmasking anywhere. Furthermore, you have to switch between tw...