One Hour One Life Forums

a multiplayer game of parenting and civilization building

You are not logged in.

#1 Re: Main Forum » Lineage Data » 2018-11-18 06:08:12

wondible wrote:
rannmann wrote:

My question is this: Does anyone have a database dump of the mysql data powering that service?

Not clear from your post if you had seen the public lifelog data

I was not aware of that, thanks!  Based on this and the scripts in the repo, I think I might be able to piece together something to generate the data I need (although this doesn't seem to include chat data, which is included in the lineage server).  I'll let you know how it goes.

#2 Main Forum » Lineage Data » 2018-11-17 18:20:44

rannmann
Replies: 3

Hey everyone!

I played the game for about 5-6 hours, and now I want to start building things related to it.  I'm a bit of a weirdo in that I enjoy writing APIs as much as I enjoy gaming...

I looked through some of the source code on github, and in particular I'm super interested in adding things to the lineage server (ex: http://lineage.onehouronelife.com/serve … d=1662313).

My question is this: Does anyone have a database dump of the mysql data powering that service?  It appears that the data is inserted via log files and a bunch of sed magic.  I don't need much data, just a few rows in each table would suffice.  I'm mostly trying to avoid having to compile a local server and play on it in order to get sample data.

I can parse through the current `server.php` file and grab all the table creates, but sample data would make things a lot easier.

-------------

On a related note, here's my plan and the goal behind it.

Optimize storage

Create summary tables and plan for scaling to hundreds of millions of records.  Since I haven't seen the full database schema yet, this might not be needed, but it's always nice to have a second pair of eyes.

Since the game's launch on steam, it seems to be spiking in popularity.  It seems like a good time to plan for the future.  I already default to supporting read/write splitting in my software.

Split front-end and back-end logic

The current implementation of the lineage site is a mixture of SQL/PHP/CSS in one file.  Front-end components are echoed out as methods run to obtain the data.  Clearly this seems to work, but there's a lot to be said for splitting the logic apart from one another.

If we create API endpoints for all the required components, it's super easy to maintain, super easy to document, and allows third-parties to consume the data.  Someone who is good with front-end (ex: React, Vue, etc.) can build something that consumes these endpoints, resulting in a beautiful site that anyone can contribute to.  There's a lot to be said about following industry standards!

Make data accessible

Long story short, providing data through an easy to consume API means new lineage features are easy to add for Jason or whomever, and anyone can make their own lineage site using public server data.  This could spawn websites where you login with Steam and can get a full summary of all your statistics, notable lives, high scores, full ancestry views, etc.  And it would require absolutely no extra work for Jason or others to maintain the prod version of the website.

And it goes without saying, documentation documentation documentation!  Here are some examples of docs I've written as part of my current projects: https://docs.opskins.com, https://github.com/OPSkins/trade-opskins-api.  I'm open to suggestions on documentation software, but for this project I'll probably just go with simple markdown like the latter.


Working side-by-side with current lineage site

Nobody likes their work getting blown up.  I'm not trying to replace the current implementation of the lineage server.  The API would work as a stand-alone component, utilizing and building on the same data that already exists.

My goal is to make it as easy to run as possible.  I'll try to parse the current config file into the new application so the only thing you'll need to do is point nginx/apache/whatever to a new subdirectory in the project (accessible via something like: api-lineage.onehouronelife.com). 

I'm open to keeping the same licensing, but my typical default is MIT or GPL.  If licensing is a big deal, I'll keep third-party libraries to a minimum. 

I'd also like to leverage redis, but in an effort to keep system requirements to a minimum, I can forego that.  Ideally you wont have to install a single thing, via composer or otherwise, in order to run this.  No promises on PHP extensions though.

Board footer

Powered by FluxBB