The trials and tribulations of an amateur game programmer. Please tell him where he is going wrong.
Thursday, October 18, 2018
Want to write a multiplayer FPS?
You could do a lot worse than follow my new tutorial at https://multiplayerfpstutorial.blogspot.com/ .
Sunday, September 30, 2018
More Games Made with SteveTech1
Here's a couple of other multiplayer FPS games I've been developing with SteveTech1:
This is going to be a bit like Alien Isolation. It's very early in the development process, and so far I'm just walking around avoiding zombie's that charge at you.
If you're going to write a multiplayer FPS, surely it's only a matter of time before you write a PUBG/Fortnite clone, and here's mine.
I should probably say that SteveTech1 can handle more than just low-poly models, it's just that those are the best free ones I could find on the internet.
Bug Hunt:
This is going to be a bit like Alien Isolation. It's very early in the development process, and so far I'm just walking around avoiding zombie's that charge at you.
Two Weeks in the Pub:
If you're going to write a multiplayer FPS, surely it's only a matter of time before you write a PUBG/Fortnite clone, and here's mine.
I should probably say that SteveTech1 can handle more than just low-poly models, it's just that those are the best free ones I could find on the internet.
Thursday, September 27, 2018
Multiplayer Tower Defence
I've just started a new project using SteveTech1, which will be a Multiplayer Tower Defence FPS. Read the in-progress tutorial at http://multiplayertowerdefence.blogspot.com/
Friday, March 09, 2018
Laser Squad in 3D
Laser Squad was probably my favourite game on the Spectrum, and I played it for hours at a time back in late 80's (one reason why I created Stellar Forces). Now that I'm developing a multiplayer FPS engine in Java, an obvious candidate for a game is a realtime version of Moonbase Assault, one of the original missions in Laser Squad.
In that mission, one side had to defend a moonbase from attack by the other side, who had to destroy the moonbase computers. My realtime version is a long way off yet, but here's a preview showing me walking around the moonbase.
For those who remember the game really well, you should recognise the layout of the map and be able to follow it as I go.
In that mission, one side had to defend a moonbase from attack by the other side, who had to destroy the moonbase computers. My realtime version is a long way off yet, but here's a preview showing me walking around the moonbase.
For those who remember the game really well, you should recognise the layout of the map and be able to follow it as I go.
Wednesday, February 21, 2018
Java Open Source Multiplayer FPS Engine - Preview
"SteveTech1" is my code name for my new Multiple FPS Engine for Java (a
name in tribute to Id). Obviously, the only way to prove that my
Multiple FPS Engine "SteveTech1" actually works, and is useful, is to
create a game with it. Here is a preview of that game:-
It's called Undercover Agent. In a nutshell, all the players (and scenery) look exactly the same. The aim of the game is to find the enemy players before they find you. Since everyone looks the same, the way to identidfy them is when they move. But then you have to move to find them! Aargh! In this level, everyone is a snowman, surrounded by inanimate snowmen. Did I see one of them move...?
Once I'm sure that SteveTech works, I'll be releasing the source.
Wednesday, January 31, 2018
Why do software publishers change software for no good reason?
"If it 'aint broke, don't fix it"
Since the dawn of time, 95% of desktop GUI's have a toolbar with a minimum of File, Edit and Help. If you wanted to open a file, e.g. a Word document or Eclipse project, you went to File and selected Open. If you wanted to know what version of software you were running, you could rely on a "Help | About" menu option.
Now I challenge you to find out what version of Word, or any of the MS Office suite, you are using, on the more later version. I don't know which versions, exactly since I can't see how to discover the version number I am on, but the ones where, for some unexplained reason, they've removed the Edit and Help menu, and clicking on File takes you to a whole new window. It also makes it much harder to Google for the solution, since you can't search for what version of Word you are using, so 90% of results still say "Go to Help | About".
As well as that, they've also redesigned the file dialog; now it's impossible to go directly to any directory on your computer. You can only go up or down a level, although if you click on the right area, it brings up the original classic file dialog! Why is this hidden? I can only assume it's so they can keep people paying for the MCSE certificates, or whatever they're called these days.
The latest culprit is Firefox. What is the point of Firefox's "Other Bookmarks"? If a user bookmarks a page, wouldn't they want it to appear under Bookmarks, not in some obscure folder that hardly anyone even knows about? I imagine new users abandoning Firefox since their bookmarks don't seem to be added, which was my first thought. They changed this feature a few months ago. Why?? Was it too straightforward and logical?
Since the dawn of time, 95% of desktop GUI's have a toolbar with a minimum of File, Edit and Help. If you wanted to open a file, e.g. a Word document or Eclipse project, you went to File and selected Open. If you wanted to know what version of software you were running, you could rely on a "Help | About" menu option.
Now I challenge you to find out what version of Word, or any of the MS Office suite, you are using, on the more later version. I don't know which versions, exactly since I can't see how to discover the version number I am on, but the ones where, for some unexplained reason, they've removed the Edit and Help menu, and clicking on File takes you to a whole new window. It also makes it much harder to Google for the solution, since you can't search for what version of Word you are using, so 90% of results still say "Go to Help | About".
As well as that, they've also redesigned the file dialog; now it's impossible to go directly to any directory on your computer. You can only go up or down a level, although if you click on the right area, it brings up the original classic file dialog! Why is this hidden? I can only assume it's so they can keep people paying for the MCSE certificates, or whatever they're called these days.
The latest culprit is Firefox. What is the point of Firefox's "Other Bookmarks"? If a user bookmarks a page, wouldn't they want it to appear under Bookmarks, not in some obscure folder that hardly anyone even knows about? I imagine new users abandoning Firefox since their bookmarks don't seem to be added, which was my first thought. They changed this feature a few months ago. Why?? Was it too straightforward and logical?
Tuesday, January 30, 2018
Free Quality Open Source #2: Space War!
Everyone remembers Thrust don't they? Or Gravity Force? If not, they were some of the first gravity/physics games, and great fun. So that's why I wrote SpaceWar. The full source is available here. It's in Java, and should "just work".
The game uses jBox2D in order to do the physics. This means that all values can be easily edited, such as mass, acceleration, gravity, bounciness etc... The gravity also comes from the masses of the object rather than "down", so players will gravitate around planets etc..
For the multiplayer aspect it uses the keyboard and as many gamepads as you can plug into your USB ports.
Since it's fully open-source, you can do whatever you want with it. Please let me know how you get on.
The game uses jBox2D in order to do the physics. This means that all values can be easily edited, such as mass, acceleration, gravity, bounciness etc... The gravity also comes from the masses of the object rather than "down", so players will gravitate around planets etc..
For the multiplayer aspect it uses the keyboard and as many gamepads as you can plug into your USB ports.
Since it's fully open-source, you can do whatever you want with it. Please let me know how you get on.
Friday, January 12, 2018
Simple Physics Engine for jMonkeyEngine
I'm currently developing an open-source multiplayer networked FPS engine, after getting addicted to Overwatch and TF2 and then wondering why there's not a single open-source Java multiplayer source game anywhere. I aim to fix that, and at the moment progress is coming along nicely; it was never going to be easy but so far it has remained fun. There's nothing to actually release yet; I'm going to wait until I've actually got a full game working before I release the source.
Anyhoo, the project has necessitated some additional code not directly linked to the project, which I can release. The first one is a Simple Physics Library for jMonkeyEngine.
jMonkeyEngine comes with an excellent physics engine. However, it is almost too excellent, and has a lot of features that I don't require which takes up CPU usage. In addition, a multiplayer networked FPS requires the ability to "rewind" time on physical objects, which the existing JME physics engine can't do.
The full source is available here, which includes an example "first-person walking around" game.
And here is a video showing it in action.
Anyhoo, the project has necessitated some additional code not directly linked to the project, which I can release. The first one is a Simple Physics Library for jMonkeyEngine.
jMonkeyEngine comes with an excellent physics engine. However, it is almost too excellent, and has a lot of features that I don't require which takes up CPU usage. In addition, a multiplayer networked FPS requires the ability to "rewind" time on physical objects, which the existing JME physics engine can't do.
The full source is available here, which includes an example "first-person walking around" game.
And here is a video showing it in action.
Monday, January 08, 2018
Free Open Source #1 - Tricky Towers
Being a good citizen, I like to give as much as I receive. So, on the assumption I might one day find some open-source code that is actually any good (only joking) I'm going to post about my own open-source code that is available to anyone that wants it.
The first one is this game called Tricky Towers, which is a simple clone of the game Tricky Towers, which I've never actually played but looked really fun.
It's an up-to-3 players game, where the aim is to be the first to pile blocks all the way up the top of the screen. However, it is physics-based, meaning unbalanced towers often topple. It can get quite frenetic and fun when there's 3 of you, especially if one players tower topples into another.
Full Java source is here.
The first one is this game called Tricky Towers, which is a simple clone of the game Tricky Towers, which I've never actually played but looked really fun.
It's an up-to-3 players game, where the aim is to be the first to pile blocks all the way up the top of the screen. However, it is physics-based, meaning unbalanced towers often topple. It can get quite frenetic and fun when there's 3 of you, especially if one players tower topples into another.
Full Java source is here.
Friday, November 17, 2017
The Programming Loop
You need a library that does something. Here's what happens:-
1. Start writing a library, e.g. a networking library for a game.
2. Use Google and ask for help online when there's invariably a problem to solve.
3. Most people suggest using an existing library.
4. Start using an existing library.
5. Realise that this library either has a bug in it, or isn't straightforward to use.
7. Use Google and ask for help online when there's invariably a problem to solve.
8. Decide it's hard work using someone else's code, so start to write your own library.
9. Start again from 1.
1. Start writing a library, e.g. a networking library for a game.
2. Use Google and ask for help online when there's invariably a problem to solve.
3. Most people suggest using an existing library.
4. Start using an existing library.
5. Realise that this library either has a bug in it, or isn't straightforward to use.
7. Use Google and ask for help online when there's invariably a problem to solve.
8. Decide it's hard work using someone else's code, so start to write your own library.
9. Start again from 1.
Tuesday, August 01, 2017
You're probably best...
...following my Twitter feed to find out what I'm up to. Who's got time to write a blog post these days? And who's got time to read them?
However, if you're interested, I'm currently developing Killer Crates.
However, if you're interested, I'm currently developing Killer Crates.
Sunday, June 25, 2017
Physics Platformer
This uses JBox2D for the physics. This post is just a dump for hosting images at the moment, but I'll add something soon. Until then, the source is available at https://bitbucket.org/SteveSmith16384/physicsplatformer
Friday, June 16, 2017
Databases - The difference between MSSQL and MySQL
STEPS TO INSTALL SQL AND RESTORE DATA TO IT
Windows and MSSQL:-
* Download SQL Server 2016 (the free version presumably)
* Get message that SQL 2016 won't work on Windows 2007
* Install SQL Server 2007 (once you've found the correct link)
* Download MSSQL Management Studio (once you've found the correct link)
* Try and restore database backup
* Get message that backup was created with SQL Server v 10.5 and I am running 10.0.4
* Try and find out how to upgrade to SQL 10.5.
* Download SQL Server 2008 *R2*
* Try and restore database backup
* Still says version number is too low
* Uninstall SQL Server 2008 after assuming it would upgrade and not install side-by-side
* Try and restore database backup
* Profit!
Linux & MySQL:-
* sudo apt-get install mysql-server
* mysql --user me --passwordmypwd < datafile.sql
Windows and MSSQL:-
* Download SQL Server 2016 (the free version presumably)
* Get message that SQL 2016 won't work on Windows 2007
* Install SQL Server 2007 (once you've found the correct link)
* Download MSSQL Management Studio (once you've found the correct link)
* Try and restore database backup
* Get message that backup was created with SQL Server v 10.5 and I am running 10.0.4
* Try and find out how to upgrade to SQL 10.5.
* Download SQL Server 2008 *R2*
* Try and restore database backup
* Still says version number is too low
* Uninstall SQL Server 2008 after assuming it would upgrade and not install side-by-side
* Try and restore database backup
* Profit!
Linux & MySQL:-
* sudo apt-get install mysql-server
* mysql --user me --passwordmypwd < datafile.sql
Tuesday, June 13, 2017
Multiplayer Platformer
After playing the excellent game Lovers in a Dangerous Spacetime on the PS4, which is a same-screen multiplayer co-op platformer, I decided to have a go myself at making a multiplayer game.
This involved working out how to read PS4 controllers. Once I'd managed to do this in Java using some source code I found on the internet, I ripped apart one of my old Android platformers and refactored it into a PC game.
To make it even more special, and so that more than one player would stay in the screen, I implemented a zoom in/out feature.
The game currently has two gameplay modes: A simple "race" mode where the winner is the first person to get to the end, and a "race" mode, where the last player standing is the winner; players are elimiated when they get caught by the end of the screen.
Full source code is available here: https://bitbucket.org/SteveSmith16384/multiplayerplatformer
Monday, March 27, 2017
More Adventures in Open Source
As I invariably slowly lose interest in my latest programming project, I decided a solution to my loss of programming mojo would be to contribute to a well-established open-source project, which already has good assets, a community, and a completed quality game that I might want to play as well as help develop. Since I've also decided to start using other languages, it would help me decide which new language to start with.
So after a lot of Googling trying to find potential such projects, I came across a few. Let's see how I got on:-
1) Teeworlds
This is a multiplayer 2D platformer with guns. Unfortunately, on my 2Ghz laptop, the opening screen (a simple background and a box for me to enter my name) was too processor-intensive for even the mouse pointer to move at more than 1 frame-per-second. God only knows how slow the actual game would be, if I could get to play it. It looks very good though, so I was a bit disappointed.
2) XPilot
This is quite an old game (at least 10 years); it's a multiplayer Thrust variant. The game was a bit jerky considering the simple graphics (even connecting to my local server) but the main problem was that none of the 20+ public server had any players online. This is the big problem with multi-player games; they live and die by the players. Once people slowly stop playing it, it doesn't matter how good the game is, it just slowly dies (assuming it had any players to begin with).
3) Unvanquished
I only include this here because it looks great, but doesn't seem to have anyone playing it. It's sad to see that a game that looks so good and, if it plays as well as Tremulous did, plays well, should be struggling to find players.
More coming soon....
So after a lot of Googling trying to find potential such projects, I came across a few. Let's see how I got on:-
1) Teeworlds
This is a multiplayer 2D platformer with guns. Unfortunately, on my 2Ghz laptop, the opening screen (a simple background and a box for me to enter my name) was too processor-intensive for even the mouse pointer to move at more than 1 frame-per-second. God only knows how slow the actual game would be, if I could get to play it. It looks very good though, so I was a bit disappointed.
2) XPilot
This is quite an old game (at least 10 years); it's a multiplayer Thrust variant. The game was a bit jerky considering the simple graphics (even connecting to my local server) but the main problem was that none of the 20+ public server had any players online. This is the big problem with multi-player games; they live and die by the players. Once people slowly stop playing it, it doesn't matter how good the game is, it just slowly dies (assuming it had any players to begin with).
3) Unvanquished
I only include this here because it looks great, but doesn't seem to have anyone playing it. It's sad to see that a game that looks so good and, if it plays as well as Tremulous did, plays well, should be struggling to find players.
More coming soon....
Friday, March 24, 2017
Moving on from Java
After some consideration, I've decided to do all my game development in another language from now on, although I've not decided which yet. This is for a few reasons:-
1) No native executable
I've never had an issue with Java's speed; the whole "C/++ is faster argument is irrelevant. However, sometimes you just want to release an executable for the target platform without end users needing to install Java first. How come there's no simple option to compile Java to an executable yet?
2) I Can't run 3D
The primary Java library for 3D (and most advanced graphics) is LWJGL, which although excellent, is unable to run on my laptop due to hardware limitations ("Cannot create window.." or something). This means that I can't use JMonkeyEngine or LibGDX. However, even something like WebGL will run 3D quite happily at a decent framerate on the same laptop.
3) No decent open source games
I periodically browse the web looking for an open source game written in Java that I can help contribute to, and I'm yet to find one that's almost complete and with a community. Most seem to be in C/C++. And there's certainly no "big" open-source flagship games written in Java.
4) Java is the defacto choice for Android apps, but the Play store is so swamped that getting anything noticed on there is impossible; and developing for Android makes things exponentially harder due to all the different devices that need to be catered for, and the constantly changing APIs. Even Google can't manage to create apps that don't crash periodically.
Don't get me wrong, Java is technically my favourite language; it's clean, relatively straightforward and powerful, and has lots of helpful libraries. But regarding open-source games, it's nowhere to be seen.
1) No native executable
I've never had an issue with Java's speed; the whole "C/++ is faster argument is irrelevant. However, sometimes you just want to release an executable for the target platform without end users needing to install Java first. How come there's no simple option to compile Java to an executable yet?
2) I Can't run 3D
The primary Java library for 3D (and most advanced graphics) is LWJGL, which although excellent, is unable to run on my laptop due to hardware limitations ("Cannot create window.." or something). This means that I can't use JMonkeyEngine or LibGDX. However, even something like WebGL will run 3D quite happily at a decent framerate on the same laptop.
3) No decent open source games
I periodically browse the web looking for an open source game written in Java that I can help contribute to, and I'm yet to find one that's almost complete and with a community. Most seem to be in C/C++. And there's certainly no "big" open-source flagship games written in Java.
4) Java is the defacto choice for Android apps, but the Play store is so swamped that getting anything noticed on there is impossible; and developing for Android makes things exponentially harder due to all the different devices that need to be catered for, and the constantly changing APIs. Even Google can't manage to create apps that don't crash periodically.
Don't get me wrong, Java is technically my favourite language; it's clean, relatively straightforward and powerful, and has lots of helpful libraries. But regarding open-source games, it's nowhere to be seen.
Monday, March 13, 2017
Sensible Soccer
I was watching one of the excellent Kim Justice videos the other day, this one being about Sensible Soccer. (If you like watching videos about games, especially of the retro variety, then I thoroughly recommend his channel). It got me thinking, how come no-one has remade Sensi for the modern day? After all, there are thousands of "retro remakes", and this game was incredibly popular back in the day.
Needless to say, someone has. (In this day and age, it's impossible to find something that someone hasn't already done, especially with regard to games). It's virtually identical to the original, but with all new updated teams, online play, plus presumably loads of other modern improvements. However, the main aspect of the game - kicking the ball around - remains as great as ever. Which makes me curious why this game isn't more well known? I guess that in this day and age, there is so much going on it's very hard for anything to get noticed.
The only "issue" I could find was a problem I had actually starting a game: the menu options are selected with Enter - apart from the one that selects "Start Game"! I spent a while pressing every button on the keyboard, and also going through every other menu option, since I assumed I must have selected something that prevented the game from starting. There was very little documentation (that I could find). In the end I had to join the Chat channel and ask. It turns out that Ctrl (which is the default "fire button" in the game) is used for this single menu option. It would be a shame if this obstacle put off any other potential new players to this great game.
Needless to say, someone has. (In this day and age, it's impossible to find something that someone hasn't already done, especially with regard to games). It's virtually identical to the original, but with all new updated teams, online play, plus presumably loads of other modern improvements. However, the main aspect of the game - kicking the ball around - remains as great as ever. Which makes me curious why this game isn't more well known? I guess that in this day and age, there is so much going on it's very hard for anything to get noticed.
The only "issue" I could find was a problem I had actually starting a game: the menu options are selected with Enter - apart from the one that selects "Start Game"! I spent a while pressing every button on the keyboard, and also going through every other menu option, since I assumed I must have selected something that prevented the game from starting. There was very little documentation (that I could find). In the end I had to join the Chat channel and ask. It turns out that Ctrl (which is the default "fire button" in the game) is used for this single menu option. It would be a shame if this obstacle put off any other potential new players to this great game.
Friday, March 10, 2017
Forum Nazis
Why do forum moderators always feel like they need to stamp their authority when there's no reason to? Users don't get paid to post messages, we do it usually to help other people and have a debate. Unfortunately I've recently encoutered a sudden bout of forum nazi-ism on a few forums, where a moderator has shut down discussion and/or deleted posts with no obvious reason that I can see.
Stack Overflow seems to be the worst, presumably because there's thousands of wannabe moderators. They're very strict with the rules (especially with what can and cannot be asked) and if you dare to ask something that's not allowed (or seemingly not allowed) you will be downvoted and your question probably closed. Do you need an online compiler since your computer is too slow? Then go somewhere else. Are you a beginner at programming? Then go somewhere else; answering easy questions is beneath them and you'll just get downvoted, along with a few unhelpful comments. (It's interesting to note that often the questions that are closed as being "of-topic" usually get high votes).
Even the normally friendly World of Spectrum forums seems to have acquired a forum-Nazi. I recently posted a link to a BBC article about the doomed ZX Vega. The next day I couldn't find it. I posted it again, also mentioning that the original seems to have disappeared. I got the terse reply saying "It's been moved", and that discussions was closed, making me unable to reply asking why or where to. Why close it? Is WoS running out of disk space? Or is WoS somehow linked to the shady goings-on with the Vega?
And don't even think about posting to the Subreddit "Explain Like I'm 5" without prefixing your title with "ELI5:", or your post will be deleted immediately by a computer. Presumably it's beyond the job of a computer to automatically do this, and they'd prefer to get humans to do it. I don't know why they feel that their subreddit is so important the posts need differentiating from all the others.
Moderators are often required for when arguments get out of hand, but unfortunately, some of them seem to feel that a moderator's job is to control the discussions, or even just create arbitary rules to give them a sense of power.
Stack Overflow seems to be the worst, presumably because there's thousands of wannabe moderators. They're very strict with the rules (especially with what can and cannot be asked) and if you dare to ask something that's not allowed (or seemingly not allowed) you will be downvoted and your question probably closed. Do you need an online compiler since your computer is too slow? Then go somewhere else. Are you a beginner at programming? Then go somewhere else; answering easy questions is beneath them and you'll just get downvoted, along with a few unhelpful comments. (It's interesting to note that often the questions that are closed as being "of-topic" usually get high votes).
Even the normally friendly World of Spectrum forums seems to have acquired a forum-Nazi. I recently posted a link to a BBC article about the doomed ZX Vega. The next day I couldn't find it. I posted it again, also mentioning that the original seems to have disappeared. I got the terse reply saying "It's been moved", and that discussions was closed, making me unable to reply asking why or where to. Why close it? Is WoS running out of disk space? Or is WoS somehow linked to the shady goings-on with the Vega?
And don't even think about posting to the Subreddit "Explain Like I'm 5" without prefixing your title with "ELI5:", or your post will be deleted immediately by a computer. Presumably it's beyond the job of a computer to automatically do this, and they'd prefer to get humans to do it. I don't know why they feel that their subreddit is so important the posts need differentiating from all the others.
Moderators are often required for when arguments get out of hand, but unfortunately, some of them seem to feel that a moderator's job is to control the discussions, or even just create arbitary rules to give them a sense of power.
Tuesday, February 21, 2017
Tips for keeping interested
When developing a game, as other amateur game developers will testify, it's very easy to lose interest. This can be for several reasons. Here I'm going to codify some tips to help prevent this:-
1) Make it procedurally generated, so it's different to play each time.
2) Make it actually fun to play.
3) Make it single player with an AI.
1) Make it procedurally generated, so it's different to play each time.
2) Make it actually fun to play.
3) Make it single player with an AI.
Subscribe to:
Posts (Atom)