gfxgfxFreeBASIC Games Directory Forumgfxgfx
gfx gfx
gfx
Welcome, Guest. Please login or register. December 09, 2018, 11:45:22 PM

Login with username, password and session length
14.10.2018 - We are currently running a game dev competition with a 300 USD first prize, up until 14th of January, 2019. Check the official competition thread here: http://games.freebasic.net/forum/index.php?topic=623.0
gfx
gfx
*
gfxgfx
gfxgfx gfxgfx
gfxgfx Home Help Search Login Register   gfxgfx
gfx gfx
gfx
Pages: 1 [2]
Print
Author Topic: 4xc Seasons  (Read 8724 times)
Mitchell
Forum Howler
****
Gender: Male
Posts: 197


Rockin Geek


View Profile Email
« Reply #15 on: July 23, 2013, 01:49:26 PM »

Update 6:
Lobby code is done server side. Still working on account system. The accounts themselves exist, just gotta handle reading all the file data. Semester is almost over, which is nice.
Logged

Never underestimate the destructive powers of somebody doing something new without having any clue of how to do it. Tongue
Jonge
Novice
***
Gender: Male
Posts: 78



View Profile WWW
« Reply #16 on: July 24, 2013, 10:59:47 AM »

Just wanted to say, keep posting. There's people around here even though its quiet here Smiley
Logged

codeheim.NET - Homemade game madness!
Mitchell
Forum Howler
****
Gender: Male
Posts: 197


Rockin Geek


View Profile Email
« Reply #17 on: July 31, 2013, 03:45:51 PM »

Update 7:
Just did a little work on the account system. I've been busy messing around making minecraft mods last week.

Anywho, here's a snapshot upload of the server code 'n data, as proof there's actually something there. Tongue
http://www.mediafire.com/download/flrtnmp2lghnru5/MC4XServer133107a.zip

For the sake of keeping the size small, I left out large files 'n folders, so it may not run straight without throwing a fuss. If so, you'll need an 'imgs' folder and a 'saves' folder. Other than that, should load up and run in FBedit just fine.

Here's the client:
http://www.mediafire.com/download/ipcnvpvcnxdcq3p/MC4XSeasons130731a.zip
Should run with no problem. The client hasn't gotten much love for a while as most of my energy has been on developing the server.


ETA: I githubbed the server code: https://github.com/NicolasKiely/SeaVax_Server
« Last Edit: August 04, 2013, 07:48:05 PM by Mitchell » Logged

Never underestimate the destructive powers of somebody doing something new without having any clue of how to do it. Tongue
Mitchell
Forum Howler
****
Gender: Male
Posts: 197


Rockin Geek


View Profile Email
« Reply #18 on: August 04, 2013, 08:04:14 PM »

Update 8:

The past half week I was all over the place working on the code. Basic account information can now be loaded from disk, and clients can now log into accounts. My table structures got tweaked and can act as key:value lists, as that's how I store server properties anyways. Fixed a packet parsing bug and did a lot of refactoring too. But the biggest new feature is that the server now loads the API parameter specs at startup and compares them to incoming command packets *before* calling the executing code. It was becoming a real pain checking for various parameters' existence manually in each API call, and adding way too much unnecessary clutter and complexity. I was able to delete a lot of boilerplate code, and now the functions are much more readable. To see all the gunk I got rid of, see: https://github.com/NicolasKiely/SeaVax_Server/commit/d7ed98a72b815fa18ee4fb548b7a44e90441da1b
And those are the simple commands.


I also did a little bit of work on the client. The gui buttons for logging into an account now work, and when connecting to a server they will try to auto-send. Also added feature to recall last text line entered in chat by pressing the up key, which makes debugging easier.
Logged

Never underestimate the destructive powers of somebody doing something new without having any clue of how to do it. Tongue
Mitchell
Forum Howler
****
Gender: Male
Posts: 197


Rockin Geek


View Profile Email
« Reply #19 on: August 12, 2013, 10:36:32 AM »

Update 9:

Starting to transition over to working on the client side again. I changed the networking protocol a little bit in terms of server response. First, the server returns an acknowledge packet if there's no data to send, as opposed to keeping silent. Next, the return packet format is a bit different; now there are three packet-chunk delimiters that always follow the three packet chunks: Header, column, and records. Before, those delimiters followed any list of fields. Headers are a list of fields, columns are a list of fields, and each record is a list of fields. The newer format makes it much easier to determine the end of a table packet, as well as make it much easier to parse partial table data. This will come in handy when I start sending larger loads. Other than a few extra tweaks and some helper commands, not much else was done server side.

I've been pretty productive on the client code. The buttons are now context-specific. So now the connection-state button also acts as a login button when connected to a server, the connect button turns into a disconnect button, and the chat-expand button switches to a chat-contract one. I'm also in the middle of decentralizing the button system. Before, all of the buttons are registered in one big, central list. Well, that can't work because different parts of the screen overlay other parts, but buttons have to be rendered after the background for their subscreens are rendered. Given that a big list would have to be rendered last, that means no other subscreen could overlay them despite needing to. So by assigning buttons to their subscreens, that problem was fixed. It was a bit painful though, cause I kept running into problems with having them respond to UI, but those issues got fixed. It will also make it easier for screen switching, so I don't have to add extra code to disable-enable button states when different screens are pulled up.
Client-side packet parsing got a big overhaul. I haven't tested it out much yet, but it parses iteratively. Unlike the older method, the new parser can handle arbitrarily large tables, as well as incomplete tables while more data is still coming in over the socket.


On the downside, I have met a huge technical problem getting in the way of current development. And that problem is called kerbal space program.
« Last Edit: August 12, 2013, 02:31:12 PM by Mitchell » Logged

Never underestimate the destructive powers of somebody doing something new without having any clue of how to do it. Tongue
Mitchell
Forum Howler
****
Gender: Male
Posts: 197


Rockin Geek


View Profile Email
« Reply #20 on: November 01, 2013, 08:24:33 PM »

An update on things.

So, I'm think that the server needed to be coded in a different language, probably C. I'm keep running into issues in dealing with networking and system code, and the lack of FB-specific documentation for the respective libraries is a real drag. Especially when functions get renamed because of conflicts, and the only way to figure this out is to dig through dense headers. Doable, but annoying and inefficient. For the past month or so I've run into some serious issues with the client code; changing the network API has lead to breaking many things, and there still are show-stopper bugs in the packet parser.

And this brings me to the next, and bigger, problem; I just don't have enough time at the moment. I'm taking a heavy course load, but that's fine. Also doing mandatory research, but the final straw is bills; they're much higher (by a factor of two) than I anticipated and previously was paying. Which means my savings dried up way too fast, which means I've been wasting a lot of time looking for jobs to fit my hectic schedule.

Ironically, I moved to save money by living in an apartment with my sister. She was poor while I had was fine with my own job, so most of the family's resources naturally went to her (which makes sense). I quit my job to move, she gets a very nice salary, and now the tables are turned, but no more external funds coming in. We had moved into a relatively nice, but pricy, place, and now I'm living well, well, well over my means trying to just pay for my share. So until I can get settled, I just can't work much on the project. :/
Logged

Never underestimate the destructive powers of somebody doing something new without having any clue of how to do it. Tongue
Mitchell
Forum Howler
****
Gender: Male
Posts: 197


Rockin Geek


View Profile Email
« Reply #21 on: November 09, 2013, 09:12:43 PM »

More updates.


So, the game is not dead. Still working on the server and fixed a number of bugs and added more features. Busy as can be, but I'm still making progress.
Logged

Never underestimate the destructive powers of somebody doing something new without having any clue of how to do it. Tongue
Mitchell
Forum Howler
****
Gender: Male
Posts: 197


Rockin Geek


View Profile Email
« Reply #22 on: December 07, 2013, 12:02:19 PM »

Welp, ported the server to Linux and I'm using a new build system. Still busy, but still coding.
Logged

Never underestimate the destructive powers of somebody doing something new without having any clue of how to do it. Tongue
Mitchell
Forum Howler
****
Gender: Male
Posts: 197


Rockin Geek


View Profile Email
« Reply #23 on: January 07, 2014, 07:50:51 PM »

Got the server to be scriptable with a shell. Other big news: Porting to Linux borked everything. ev. er. ee. thing. Cleaned up most of the mess, but the account manager still acts wonky sometimes, and occasionally crashes. Particularly when involving the lobby chat function. On the bright side, testing is now much easier since I can have bash scripts handle the work.
Logged

Never underestimate the destructive powers of somebody doing something new without having any clue of how to do it. Tongue
Mitchell
Forum Howler
****
Gender: Male
Posts: 197


Rockin Geek


View Profile Email
« Reply #24 on: January 10, 2014, 06:02:46 PM »

Cleaned up some more bugs. Here's a sample shell script I use for testing the server using the new interface program:

#!/bin/sh

# Connect new profile to server @ ip address 127.0.0.1
./seatab -p "chatbot" -i "127.0.0.1"

# Log into account 'bot' with password '12345'
./seatab -j "chatbot" -m "/acc/log/login -account bot -password 12345"

# Warn everybody in global chat lobby that the server will be shut down
./seatab -j "chatbot" -m "/chat/msg -m \"Ima shuttin down in a bit!\" -r lobby"

# Wait a couple seconds
sleep 5s

# Shut down server
./seatab -j "chatbot" -m "/prc/stop"

# Properly close profile
./seatab -j "chatbot" -r
Logged

Never underestimate the destructive powers of somebody doing something new without having any clue of how to do it. Tongue
Mitchell
Forum Howler
****
Gender: Male
Posts: 197


Rockin Geek


View Profile Email
« Reply #25 on: January 27, 2014, 12:50:47 AM »

Gosh this place gets quite.

So, the current game is kinda on hiatus; I'm working on a small maze game using the same server. The front-end is java, but the back-end server is still the same ol' Freebasic program. I'm trying to transition to a plugin based system, where game-specific code is loaded as a dll and core logic (eg account management, chat rooms) is the executable itself.  So far you can log in, create and edit mazes, and create empty game rooms. If anybody wants to play with it I can upload the client program, although it's still in heavy development. Currently there's a bug with the client parser where it trips up on empty tables and gets out of sync. I already have a cheap host for the server, and I usually leave it running.


Now, the whole plugin thing. One thing that's kinda baked in to the server program is that there's always a minimal threshold of latency. The client sends a command, the server holds on to the request for a while, runs a set of rather expensive parse operations, then acts on it. Furthermore, most state is pushed to the disk; the server avoids storing most information in RAM if it can help it. That isn't so bad since the server hardware is running on SSDs. But this has lead to an interesting situation: the request-answer latency is high, but the RAM and CPU usage is very low. That, and the amount of stored state is small. Thus - outside of the issue with maintaining consistency of files - the work load is fairly parallel in nature. Given the rapid start up time and using plugins to only load relevant code, it could be possible to build the server to scale. This is all waaaay down the road; I just want to get the games made first.

Most of the server side data is highly tabular. In fact, all files are as text-based tables. As some of the data operations get increasingly more complex, it may make sense to switch over to using a proper SQL database (I'm thinking Postgresql). That would help address the concerns of concurrent processes accessing the shared data. Fun times.
Logged

Never underestimate the destructive powers of somebody doing something new without having any clue of how to do it. Tongue
berrian
Novice
***
Gender: Male
Posts: 52


Mr. Dev


View Profile Email
« Reply #26 on: January 27, 2014, 02:45:59 PM »

Mitchell, you are exactly right!

Therefore an important Mission Game kinda goes hiatus; A small maze Games on the school server may be the same. --java front end, but it won't be the same ol' Back was awarded--freebasic program. transition plugin base system, I loaded the studies where specific Games--and in the middle of the dll code and logic (eg management account, Lady rooms) with escape executable. I can then Remote personal log, edit and create mazes, and Games rooms empty form. only, perhaps, to Play any of our client program, I am able to upload although, as boys, we had movement of heavy development. client parser bug currently where the day and empty the table. cheap game host, server.

Somewhat similar to what you said.

David
Logged

Mitchell
Forum Howler
****
Gender: Male
Posts: 197


Rockin Geek


View Profile Email
« Reply #27 on: February 06, 2014, 04:16:38 AM »

Ah, the smell of fresh bugs being squashed. So far, it seems the remote admin daemon for seavax is now much more stable. Fixed a crashing bug when a remote server disconnects, and resolved a separate hanging issue for clients trying to read from a closed server connection.

Had some real fun with seavax, I wrote a simple query system for the table structures. Ended up fixing a bug with game authentication, since the new system allows for properly nesting conditions. eg Don't start a game until host has map of equivalent size *and* map is properly staged as public.
Logged

Never underestimate the destructive powers of somebody doing something new without having any clue of how to do it. Tongue
berrian
Novice
***
Gender: Male
Posts: 52


Mr. Dev


View Profile Email
« Reply #28 on: April 24, 2014, 09:21:14 AM »

Interesting idea.
Logged

Pages: 1 [2]
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines
Cerberus design by Bloc
Valid XHTML 1.0! Valid CSS!
gfx
gfxgfx gfxgfx