isd_treeclient

isd_treeclient

2 devlogs
6h 39m
Created by Tree Plate

A client for [Interstellar Dynasties](https://github.com/Hixie/isd), a game about space exploration and conquest (or, at least, that's what i think it's going to be about - right now it's still very early in development).
NOTE: This project was started way before SoM, so the time is not entirely accurate.

Timeline

Ship 1

Tree Plate

24 days ago

Tree Plate Covers 2 devlogs and 6h 39m

Since my dad needed to use the computer to build his app, he switched profiles on vscode and i didn't switch it back, so this time is not entirely accurate.

This devlog I fixed a bunch of simple bugs:
- My fcGrid renderer renders inside of a dialog for grids inside other grids (see attachment), so I added a border to make it clear where the grid ends.
- When my parser failed to parse a system server binary message, it would end up in a corrupted state where some assets exist but not others, now i just clear the state to make it not corrupted
- My solar system view was opening several dialogs when I didn't have an asset for an icon, now it should only do that once.
- I made the planetview dialogs (see attachment) be as small as possible instead of expanding, which was because I couldn't figure out how to still have that X before.
- I added an X to my widget that handles your username and password.
- I fixed a bug where the thing that looked up what a material was was only looking at an fcKnowledge that happened to be attached to an fcMessage.
- I fixed a bug created earlier in this devlog where it loaded the asset icons even if icons from the network were available.

Update attachment

This devlog will be on the longer side, because it's a lot of stuff and I have to tell you about my existing code. This does assume you've read the server's README, however.

First, changes brought upon by a change in the abilities of the starting spaceship's space sensor.
Planets (fcSurface) other than the one with the starting spaceship don't have regions (fcGrid child) anymore, or at least you can't see them. This makes showEmptyPlanets, my flag for whether to show regions with no assets, not useful anymore.
My debugging view, which showed all the assets, used to be really laggy. Since it's in a tab, it would make going from and to that tab lag. Because of this, I made it so you had to select which system to see, even if you only had one system, so you didn't accidentally trigger the lag. Now that the space sensor can't see as much, it's not as laggy and I can autoselect the only system you have, like I already do in other views.

Next, the main feature (fcBuilder) and related things.
Obviously, I had to actually implement fcBuilder.
Because of this builder change, the way fcStructure works had to change, so I fixed my fcStructure parser.
I made a cool visualizer for fcStructure, which is shown in the image for this devlog. The light green is the quantity, and the dark green is the hp. It's scaled so the smallest max quantity is a fixed height, and the other components are to scale with that.

Next, some additional features added at the same time:
The tech tree now contains knowledge for a material called silicon, so I made an icon for that. By default I use the icon from the server, but I also have my own 16x16 icons.
fcOrePile now has an analyze command, which sends the approximate total quantity, and the approximate quantity for each known material.

Next, two features that were added later, but are still in this commit/devlog:
fcPlanetaryBody has a seed, which I'm mostly ignoring but I need to parse it, and also I put it in the debug view
fcRubblePile has materials now, which I'm also ignoring because the only rubble pile in the actual game has no materials

Finally, some stuff that aren't really related to server changes
I had a class called ContinousBuilder, which I renamed to ContinuousBuilder because that's how you spell continuous.
I have a view that shows any fcGrid in an fcSurface, and when the client disconnects I now set the selectedSystem field to null.
I added a function to parse a Uint64, my custom type made of two ints. This type exists because when compiling to JS, the default int type is only 52 bits (i.e. it's a double).
While doing that, I found out that my multiplication code was completely bogus. I fixed it.

Thus concludes Devlog #1.

Update attachment