notAspace 2020

Done 00 %

Connect browser debugger for Client and Server (lovebird)

To speedup development I need runtime debugger. Instead of complicated addhoc tools I discovered existence of this great LÖVE lib - lovebird.

Add basic security through the instance key

I would like to make sure the server respond just one authenticated client sending requests from on address. By repeated login the previous approved connection will be lost.

Basic server and client based on LÖVE

The plan is to take the best 2D engine template ever for MP gaming and variate it basically so it present itself as notAspace server and notAspace client.

Integrate some GUI lib capable of table-based UI

The plan is to experiment with GUIs which can be found on https://github.com/love2d-community/awesome-love2d . Final selection was between GOOI, LUIGI and Gspöt. GOOI won mixing feature-rich lib which has still human readable code.

Add demo ability to send big data sequence

I figured out that one UDP message is limited by size. Lets cut bigger messages in smaller chunks and send them in UDP-suitable way to the client.

Map composition analysis I

Region VS Sector VS Districts is still open question.

Based on analysis I did during 2020 I did another round of analysis to disclose some open questions on economy.

Typical questions:

  • On which level we declare realm ownership?
  • Which level is unbreakable independent economic unit?
  • Which level is unbreakable autonomous unit?
  • How many buildings per region/sector/district?
  • Do we want to use sexy-hexy tiling or chessboard tiling?

24x24 map limits:

  • 12x12 rendering districts
  • shifted limits of hexy tilings

Make public Trello board to capture progress

I need tickets in Trello so work on notAspace can be easily processed for the web presentation.

Modify lovebird debugger to be able to show long keys in tables

It is very hard to debug tables with keys longer that 15 characters or deep tables. I need to change the HTML/CSS of lovebird lib to allow me to do that.

Add temporary button for playing a turn

Add first basic interaction - ability to play a turn which trivially sub-duct 1 turn from turn account.

Client is able to visualize basic realm data

On client side it is possible to request basic realm data (e.g. resources) and visualize them.

Add ServerAPI for registering login and creating realm

Client sending proper message may create login.

One realm info screen MVP

Screen, which shows public information about one realm.

Extend space stations a bit so they contain more than one tile.

I would like to test ability of [MILESTONE] Worlds screen MVP to show generation outcomes and at the same time provide some sense how space stations "worlds" would work in a bigger picture of the simulation.

Realms screen MVP

As same as I made [MILESTONE] Worlds screen MVP now I would like to add similar one for realms

Worlds screen table header

Add explanation what each column in worlds screen means.

Add individual label background styling option

For making standard tables with header line I need to have ability to edit the background of labels. Currently it is always off and solution with "fake buttons" may be too expensive from performance perspective.

If background is defined on creation, make it visible, otherwise keep original behavior of labels.

Create standalone styling file for gui

Separate on client backend side layout and colors definitions

[MILESTONE] Worlds screen MVP

It is time to show something from notAspace worlds...

But first

  • we need to generate few of those
  • we need to be resolve some hard representation questions
  • we need to be able access all needed data in client <=> server manner
  • we need to make some basic UI work on client because the add hoc drawings are no longer suitable

Generally what prevents me to play with worlds generation a bit more is no way how to validate results easily. Worlds browsing has to be first big feature I have to deliver at least on MVP level to unlock more creative experiments.

List of worlds screens Prototype

I attempt to show list of clickable names of worlds which will move you to the screen of one world.

Server API providing range from the list of worlds and their basic information

I would like to be able to get data about subset of worlds identified by range from certain ordering (by name, by size, etc., I will just pick one default). For each world I would like to provide

  • name
  • if it is home world of some realm
  • size

Refactor prototype server and client DBs to stop use string keys and start to use number indexes for tables which are expected to not REMOVE

To speed up development at the beginning I used string based tables for representing users, realms, worlds, regions and sectors. Now the long names are not practical for performance and user-search reasons.

... I hope I wont regret this ;)

Move menu on the left so it is easier to add new screens before any advanced GUI is created

Partially procedural menu we have on top is hard to extend by many new experimental screens => I decided to move the menu on the left.

Generalize the client data storage to duplicate server structure if possible

Seems that I will be transferring a lot of data from server to client and every ad-hoc integration is creating mess - because every message is constructed differently.

New approach is assuming there is database of basic world primitives like worlds, regions etc. on client side, just less populated. The structure of DB is same (if game mechanics permits) and local database by definition not containing all data, just subset.

On the other hand sending the data is just simple update of assumed categories.

It has implication on screens GUIs: they wait for local db to have "some data", even if they are old. That can cause problems later by showing older data before new ones arrive :warning: , but now it is good tradeoff (resulting e.g. in faster feedback if you go on the same planet again).

One world screen demo II

This time I try to visualize

  • proceduraly created world
  • using new GUI module instead of manual placing of map and UI elements

Generic system for big data sending

Seems that even one world data is too big to be sent by UDP message. I need to make sure I can satisfy bigger messages sending if needed,

Extend GUI module by ability to display instances of complex component sets

The goal is to dramatically reduce "ad-hoc visual elements" in main.lua. By utilizing GOOI UI and adding few extra own classes I plan to construct basic reusable UI blocks.

Research on Opus Magnum

Goal: find inspirational patterns for low level primitives

Observations

  • splitting and joining tools - for potential graph standardized - game mechanized operations - e.g. links updates or disintegration along specific governmental places in notAspace
  • transmutation to limited set of variants => 1) neutralization 2) addendum/power-ups 3) cloning
  • patterns checking in infinite-loop supporting environment
  • leg-wise "links" transfers along long path (=modification of long link following different simple rule should be standard procedure of making stuff secret/faked)

One user screen MVP

Screen for displaying public details of one player.

Users screen MVP

Screen showing users listed by ID, similar to [MILESTONE] Worlds screen MVP and Realms screen MVP

[MILESTONE] Make notAspace development visible for people

Currently I have Miro board which is connected linked with Board: y4llW0aP">Trello board.

Increments are well organized in columns almost in a way as notalab website newsfeed needs.

I need to add notAspace section there and upgrade the webpage with basic caching so the integration is robust on big traffic.

Remove ad hoc on-login realm data load and replace it by screen driven request.

On login client is sending request for realm data. With containers in place we can remove and drive all data loading by those containers init functions.