Winter Holidays and Server Improvements

For the last 2 weeks I’ve been on the Winter Holiday break from Uni. Which has given me a lot more free time than I would usually have, so I’m not terribly sure why it’s taken a little over a month to sit down and write out what I’ve been up to, but here we go.

Since Mid to Late 2012 I’ve ran a Team Fortress 2 Community, SimplyTF in part where my nickname ‘SimplyJpk’ was created, I currently run a 24/7 HighTower server running a custom Map built from a stock map in Hammer which is quite popular, as well as a ‘Jump’ community called JustJump which was very popular before I started Uni, but with limited free time has dropped a bit in popularity, However, still maintains a strong user base.

The Servers themself run a few Custom made Plugins coded in Sourcepawn, which is a fairly simplistic language but a good spot for side-projects as it is quite flexible. Today I’ll be talking about my Timer plugin I built a couple years ago and how bad I made it, okay, I won’t, as that would likely bore just about anyone including myself. The idea with the timer for those not familiar to ‘Jump’ communities I strongly suggest checking out this video which gives a better all round understanding of what it is I’ll be talking about.

Jumping, put very simply, is getting from Point A to Point B as quickly as possible, a lot of maps have been created which expand upon this and is further complicated by obstacles.

My Timer records when a user starts, when they reach milestones and when they complete the map, storing their time as either a Personal Time (Non-Competitive) or a Time (Competitive), users in the server can see all competitive scores using commands in the server and can see some information such as below.

Information Displayed to User

This had been the main way of displaying information, as SQL feedback from within the game is quite time consuming and cpu intensive if not operated correctly and can lag the game server which is not ideal.

I fixed up a lot of the code within the timer as over the last 2 years I had learnt a lot of techniques from my course which made certain things go ‘wow, I programmed that terrible’, one such mistake was setting up 32 (Max Players) independent timers to run on the server for each player. When I could use 1 system based timer and just store the start and end time and calculate the differences. It’s not rocket science, but when I first made the plugin, I was still learning a lot of the SourceMod API and as such, my early plugins suffered.

With my free time from the Holidays in hand, I decided to make a simple website that the VPS is hosted on to display information to users in a simple way that they could browse around. When a User clicks on a SteamID (64Bit) it will use PHP to fetch SQL data related to only that user.

All Scores of Certain User

Similar PHP _Get calls can be made for MAP and CLASS, an example of map is shown below, but for certain classes isn’t quite polished

Scores By Map

When a User visits the website or goes to the page without PHP lines added, just a plain list of the server is given, currently not very well formatted or shown in any order.

List of all highscores

This still remains a fairly sized side-project, and as it becomes more fleshed out I may include it on my portfolio side-project but for the time being, this timer project has been a project taken up to fill the void of missing plugins for the game. It very much isn’t a public release kind of project, not at its current state. My skills in PHP, SQL and Javascript are fairly limited, and hopefully making something like this will help to improve those skills.

For the time being however, it’s a fun little project that I have a number of regulars on my servers who are happy to test, all-though they just think they’re using tools to help them!

My Lack of Skills

Here is hoping my next post is not a month away,
James.

The Beginning

If you had asked me 5+ years ago if I would ever create a website that was purely a place for my thoughts and my job ambitions, you would have likely got a “Probably not, who has time for that?”.

And honestly, I still feel the same way, a place where I rant on about a few key details and what I might have read lately seems quite odd, but I’ve been told by a few people within the industry that it is a good way to network, and a good place to show employers that you’re serious about what you do, Which makes a good amount of sense. I would like to be an influencer at some point down the line which makes this even more critical that I get experience now, so here I am.

I plan on trying to post here at least once a fortnight, I won’t give myself a hard limit on what the post will require, but I feel I can cap my fortnight into a good paragraph or two, maybe more if I’m very proud of my events at the time.

I’ve rambled on a bit, so I’ll try keep the last fortnights worth of events short.

We’ve been working on Physics Engines in class for the last couple weeks now, I have two assignments due over the next 2 weeks, a custom physics engine from mostly scratch (OpenGL Environment) and a Unity Based Physics Simulation with a few more complicated things within it due a few days later.

The Unity Project is but easier to finish, so I’ll show off a few things to do with the OpenGL.

Scene from OpenGL Physics Engine

The above image is what I’ve submitted as my final copy of the engine (To work on the Unity Based project a bit more), The scene contains very basic elements such as SphereToPlane, SphereToSphere, BoxToBox Collisions as well as Springs and Joints setup using Hookes law with Dampening as well.

From the ImGUI Elements you may be able to see a bit more about what is setup within the scene and whats not, as it is a fairly simple simulation.

I’ve added functionality to the mouse to add/remove and connect bodies and the such, I quickly made a softbody out of Spheres and springs which isn’t all that impressive but mostly works as it should. If the case came where I had to create a Physics Engine or Use an already made one, I feel I would be more prone to use an already created one like PhysX used by Unity or other engines simply due to the time it takes to make even a simple system like this.

Updates

Above is another screenshot of the same scene with some bodies attached and moved.

If you have any questions, feel free to ask 🙂

Thanks for stopping by,
James.