Dev Log:

Tetra Force Logo
  • Annoucement: New Blogs and Updates to Come! (4/15/2021)

    Welcome all, to the beginning of something (hopefully) great.

    I am here to announce that the “post blog” button on this website has been found, and now we will be utilizing it! These will be semi-frequent, and hopefully will allow us to take you on our journey into our demo.

    Progress has slowed a little as other projects steal our passion, but fret not! Tetraforce will not be left in the dusty “Godot projects” folder on some cluttered desktop. In fact, some new things have been added, with more on the way!


    Now to answer the question, “What have they been doing?”

    Joseph Manley

    Magical incarnation of spells, skills, and advanced wizardry Joseph Manley is, without a doubt, working on automation of the back end. He has cleaned up a lot of background bugs and implemented fixes for Tetraforce specifically, and will be pushing them soon enough.


    In his own words:

    I recently ran into a challenge where an object that was animated using a tween required a visual effect that would be a frame by frame animation. The issue being that it required pixel perfect timing in order to line up with the object. The solution itself is fairly simple, but required some math.


    The Tween interpolates 16px over 1 second of time, but also uses Ease In and Out, so the movement isn’t constant. So the easiest way to manage that was to record a gif of the animation and convert that gif into frame by frame. Thankfully when opening gifs in Photoshop it does just that. I was able to parse out the moment that I needed which was equivalent to 17 frames of animation. But with that same 17 frames you have to recreate the appropriate frame rate in order for the effect to line up accordingly. This calculation is easier in milliseconds, so 1000ms / 17 frames = 60ms/frame. (58.8 if we’re splitting hairs).


    After that it’s just a matter of setting up the animation in an overlay and the result shows for itself: This knowledge can be scaled up for any time based animation vs. frame by frame and can be used in much more complex situations. Using a gif is an easy way to have a recreation of the moment at hand and work with an overlay effect in the art program itself. That way you minimize the amount of trial and error of running the game every time you make a change.

    I think the result came out great, and I am sure we will go forward with this method, as it allows for a lot more flexibility. This said, I imagine this information could be useful to animators finding themselves in the same predicament.

    In addition to all that progress the future holds more to come. Off of the top of my head the following need to be implemented before we can call this a “complete” demo.

    • Dungeon elements for puzzles need to be added
    • Enemy Rooms
    • Saving
    • Mini bosses for the shrine and dungeon itself
    • Main boss for the dungeon
    • A place to spend those hard earned tetrans (a shop)
  • The Power Behind the Scenes (11/3/2020)

    TetraForce is Multiplayer, but there is a very robust system running in the background that has enabled it to be as such. We are very fortunate to have @Joseph B. Manley at the helm of our multiplayer servers through the use of AWS. If you are at all curious, I encourage you to read his blog post about how he achieved this for TetraForce. The break down and visuals can really help digest the scope of the whole project. It is a fantastic showcase as to what can be done in tandem with the Godot Engine. We can’t thank Joseph (ahem, #2) for joining our project, be sure to check out his blog.

    Read about TetraForce Multiplayer and more!

  • Online multiplayer Zelda: Links Awakening? Almost! (8/23/2020)

  • About Us! (7/16/2020)

    Welcome to the TetraForce Dev Log. This website will serve as an ongoing record of all accounts related to TetraForce. If you’re new here, and you don’t know anything about us, well, you should head over to the About Page and get yourself caught up! If you’re interested in learning more, or being a part of our community. Join Us on Discord!