Tuesday, December 20, 2011

Sending/Receiving Data

     Welp, I haven't posted in awhile. I finally got the core of the server to run correctly, given the specified amount of ticks.After figuring that out, it was finally time to move on to sending the correct data back and forth. Since all of the art assets will be on the local machine, I don't have to worry about storing any of that on the server. This allows me to just focus on making the server the last say in all game functionality and not have to worry about downloading files from the server (at least not yet).
     Now comes a very interesting, yet somewhat frustrating part. I have to determine which data is essential for the player to have right away as soon as they connect. This is basically the loading screen section of any multiplayer game. The server and client are communicating back and forth, so that we can get them both on the same page, before showing the user anything and handing over control. This prevents any unsightly loading of assets or preventing data that is reliant on starting the game from being seen before it is all there.
     We will be using loading screens for each map. We are already (kind of) working on those. We really just want to get a feel for what they are like before anything at all becomes final. And of course, we have to make the maps fully before ANY of the loading screens become final.
     This is where my head starts to spin a little, because I have to a) determine what data is needed right away. For instance, the max player count on the server is needed right away because the Player list on the client side is dependent on that number. Then there is b) Making sure I am 100% the data is there/sending and that it is going to the correct people. I have been trying to make my code as flexible as possible to help make this part a little easier. For instance, when a player connects to a server, the following (so far) happens:

a) The client connects and sends a string of their name to the server
b) The server receives it and creates an instance of a Player with that name and a free ID
c) The server then has to send the max players number it has and send it to the client that just joined (not all of the clients) so that I know how many Players to initialize on the client side.
d) The client receives that creates the specified amount of Players
e) The server then sends the name and ID of the newly joined player to ALL clients
f) The clients set a new Player with the ID and name sent from the server

There is a bunch more to have to be sent, and a bunch more checks that need to be done before handing over control or showing anything, such as determining the current map, figuring out all of the current players, etc.

-Dave

TL;DR: This is hard.

Saturday, December 10, 2011

Progress Check

This post is going to be created for the sole purpose of seeing where I stand right now, before I begin working on our epic holiday sprint of game development. Then, after this break is over I will make a new post with everything I have done at that given time to see just how much I accomplished in a short amount of time. This list is only for the visual side of Galaxy Gangs.

Currently Achieved
---------------------

Menus : 90 - 95%
HUD : 0%
Death Anims : 25%
Walking Anim: 80%
Weapons : 50%
Characters: 90%
Scoreboard: 0%
Team Logos: 100%
Levels: 5%
Effects: 0%

Of course, these numbers are pure guess work mostly due to the fact that I have no idea what all content we plan to include when we are all done.

E

Thursday, December 8, 2011

New Background!




Just posting the new main menu background that we now have included.

Friday, November 25, 2011

Server/Client Architecture

With it being Thanksgiving and all, I was able to actually get some work done. I was still doing school work, but at the end of the day, I got to work on Galaxy Gangs. What I've been spending a lot of my time into is the client/server architecture. I have been basing it off of the Valve Source SDK networking concept. It's really kind of interesting and a really cool way to send information between a client and server. It all relies on this concept of tickrate. The server runs at a user-defined number of tickrates per second. Each tickrate, the server checks for incoming messages, checks the game rules, and updates its own objects. It also does some other things, but the major things are the ones above. The next thing the server does, is that it checks for clients that need updating.
For the most part, I think that will be 99% of the time. I still have to rattle my brain some to figure out on how to do this. After it figures that out, it sends out "snapshots" to the clients that need updating. The client captures and sends out user input at another user defined variable.
So in a nutshell: The client samples user input at a certain rate. Sends out all of that data. The server reads all incoming data and updates the game objects at a user defined tickrate. After each tick is over, the server sends out a "snapshot" to each client that needs it. Rinse, wash, repeat. Throw some lag compensation in there with interpolation, and there ya go.
I'm still working on this, but once it is done, hopefully it'll at least work like I want it to. I REALLY am excited to start working on the core of the game.

If you have questions, leave a comment! It would also be appreciated if you could follow the blog!

Dave

Saturday, November 19, 2011

Choose Your Weapon



I've been working with the weapons a bit lately, just making some basic designs. Its funny how without even trying I have already implemented smart game design into my weapons. Currently each weapon has its own unique color and shape (yellow triangle, orange circles, blue lines) distinguishing itself from the others. This makes it very easy for the player to tell immediately what they are up against when in game. Of course this slightly becomes a problem due to our teams being distinguished by color too, thus having a green soldier with a yellow gun for example, but I do not think its too much of an issue. Of course, the problem here is that if I continue this pattern, I will be limited by the number of different colors, but I am far from that point at the moment.

E

Wednesday, November 16, 2011

So...

I haven't posted a blog like I wanted to recently. This is because I had a little crisis at my apartment and they needed to take it for a little. Regardless, I have the source code on my USB drive and I'm expecting to get my laptop back tonight and start working again. I would rather have my desktop in my apartment, but it's still be fixed. However, my laptop still has the engine on it and the IDE, so it should be fine to do some work until I'm allowed back in. Hooray for writing more code soon!

-Dave

Monday, November 7, 2011

Art of Trial and Error

Above shows just some of the iterations toward creating the final "death animation". Basically the above image would be used for when the player dies, this is the end result. The process I use to create the final image is pretty much trial and error applied many times through several iterations. First I started by just taking any two colors and doing a really rough sketch in a few seconds to give myself an idea of what im trying to make the final image turn out like. I then just used a series of lines attempting to map out the outline of the character I am creating, starting with the largest and easiest part, and working my way toward the more in depth areas. Overtime its easy to see how the drawing turns from something cartoony at best into something more believable by applying gradients and added details. In all, its a long process but the end result is a satisfying one.

Sunday, November 6, 2011

Welcome!

Hey everyone! We're a yet-to-be-named indie game developer, trying to make our very own game. This game, called Galaxy Gangs, is a large work in progress between myself and a friend. We plan to use this blog as a development blog to let people know how progress is going and about any updates. We both will be using this blog so expect updates from the both of us.
We really love playing games and we wanna make a really fun experience. We hope we make something really cool that's enjoyable. Enough about us however, and more about our game. Galaxy Gangs, is going to be a top-down 2d multi-player shooter.
However, since there is only 2 of us, I can only write code so fast, and my friend can only make art assets so fast, so it will take some time. But, Rome wasn't built in a day :). There's not much to show at the moment, but here's just a screenshot of the game being launched.


Any questions, leave us a comment! 

-Dave