Intro, History, and the Merge of NetGun


Hi, Comvar here. NetGun is a game I developed with a friend, shadow999999. Thought I'd write a bit about the merge update (v1.1.0.0) and while I'm at it, a fair bit about NetGun in general (a short history and known issues/considerations).

Merging the server and client as one.

I finally got around to merging the server and client into one program! There still needs to be at least two separate instances of the program running (one as a server, the other as a client) for gameplay to occur but the one copy of the program is now suffice.

A short history of NetGun.

NetGun started as a project for a high school assignment in which students devised a software development project to work on and set out to develop their project (if it's approved of course) documenting its development. We made NetGun out of a choice to explore network programming (via it's utility in multiplayer games).

Several designated versions of NetGun as separate server and client software existed prior to the merge. Some of the oldest versions were never on (as far as I remember) since some updates were developed and finished before NetGun's release. All designated versions up to now (all versions from the assignment's finished version to merge update) are as follows:

  • v1.0.0.0 - This version is the state of the game when it was finished for the high school assignment it was developed for.
  • v1.0.0.1 - Changed the ship from erroneously thrusting forward upon the left joystick being held down to correctly thrusting forward upon the left joystick being held up (the intended control scheme was for the left joystick to be held up, not down).
  • v1.0.1.0 - Added the ability for the server operator to adjust the speed of the lasers that player ships shoot.
  • v1.0.2.0 - Added the simple ship diagrams/icons coloured the same colour as the player's health bar.
  • v1.0.2.1 - NetGun was converted to GameMaker Studio 2 (it was previously a GameMaker: Studio 1.4 project).
  • v1.1.0.0 - Merged the server and client into one program. This is the latest version of NetGun at the time of this post.

Known issues/considerations abound.

  • Network Functionality
    • NetGun freezes upon an unsuccessful attempt to connect to a server as a client (usually this happens because the target IP and/or port of the server to connect to is set incorrectly).
      • This is a bug that was ignored under the time constraints of the original assignment's limited development time available to complete the game.
      • This really needs to be fixed by implementing a check for the server's presence at a particular target IP and port performed before attempting to connect (such check would give a simple "server not found" message instead of crashing the program).
    • If the server is terminated, the clients don't react, the clients just silently stop receiving updates from the server and functional gameplay stops. A message indicating a loss of connection to the server should be implemented.
      • This is another issue that was ignored under assignment time constraints.
    • An instance of NetGun hosting a server doesn't allow a player to join the game locally via that instance. Joining a hosted game on the same computer requires launching another instance of NetGun and using that instance to join as a client. Adding the ability to locally join the hosted game within the same instance would eliminate the additional CPU strain of running another NetGun instance for players who want to host a game and join that game on the same computer.
      • This issue is inherited from the server and client originally being separate programs that followed a strict server-client model, where the server software only hosts the game and doesn't contain any ability to perform client processes such as joining a game and taking player input.
  • Menu Interface
    • The menu design could be a bit confusing and/or annoying for some users due to it's odd use of multiple sub-menus and the fact some menu entries are modified by typing isn't clearly shown in any visual way.
      • It was kind of thrown together for another project and then thrown into NetGun to quickly get a menu up and running (during the limited assignment development time).
      • Goes without saying that a better menu design is entirely possible.
  • In-Game Interface
    • Players probably don't expect (and/or want) to be staring at latency and FPS stats that they can't turn off.
  • Gameplay Mechanics
    • The gameplay mechanics are really  basic and consequently gameplay isn't very interesting until about at least 4 or (preferably) more players join one game.
  • Gameplay Flow
    • The gameplay has absolutely no imposed structure to it; people just drop in and out of gameplay freely which can be annoying if a properly fair and/or controlled match is desired and other players are not cooperating.
  • Soundtrack Production
    • The soundtrack was recorded using a Yamaha PSR-150 connected via an auxiliary connection of imperfect quality. High quality speakers will reveal the quality of the recordings to be limited.
    • Also my imperfect audio editing skills in Audacity (which was used to modify and combine recordings to make the tracks) and limited recording samples made resulted in issues like the main menu track ending abruptly.
  • Background Music Composition
    • The main menu background music is rather weird, it doesn't really fit in with the non-serious arcade gameplay of this game. 
    • The background music played when hosting a server that is currently devoid of players is odd, possibly unnecessary at that.



NetGun (v1.1.0.0) 9 MB
14 days ago

Get NetGun

Leave a comment

Log in with your account to leave a comment.