Fuck steam.

The people at steam who decide policy and how to present it are clearly great geniuses. They have figured out how to totally shaft the indie market and most indie developers are happy about it and will defend them to death.

Now I know from experience that I need to justify this view to most people, because most people are living in a fantasy world when it comes to thinking about steam so let’s get clear about some stuff;

Steam are a BUSINESS, they only care about your game if it is likely to MAKE THEM MONEY. And I think our general desperation to get games on the service is damaging the market as a whole.

Greenlight is steam’s new way of finding indie games to put on their service. You can submit your game and the steam community votes on it and the stuff that filters to the very top gets the privilege of being on steam. It’s a brilliant idea, from steam’s perspective; they don’t have to do any work, and the community rejects the 99.9% of indie games they wouldn’t pay for leaving only profitable games left.

But it’s more brilliant (from steam’s perspective) than just that; greenlight has no content filtering AT ALL. If people find a game’s greenlight page it’s because the *developer* pointed them there. It’s impossible for people to just *browse* greenlight and find something they are interested in. This way only games that have a committed and large fan-base already will make it to the top. The games that would be guaranteed hits without steam, will be on steam!

The vast majority of developers will never see that ‘green light’ and get the chance to see how their games would sell on steam. The system is only good to the lucky 0.1% of indie developers who actually make it onto the service. Everyone else who tried just wasted their time .

All of this so far is totally fine, it’s a business after all! Steam aren’t there to do anyone anyone any favours but themselves, and that’s just super-cool, I applaud you for finding how to do less work and make more money steam. You guys are super smart!

… Well, it *would* be totally fine, if it wasn’t the case that steam has a massive fucking monopoly on PC gamers. “I won’t get it if it’s not on steam” is such a common attitude I could spit and it’d hit someone who thinks that. It’s not a mystery why either, steam offer an EXCELLENT service to their customers for sure. But their customers make up the majority of paying gamers and it leaves little room for the rest of us to make a living.

I would argue then, that steam *should* be as good to indies as people *think* that they are. If steam are the only way *most* people get their games, then it’s nothing less than steam’s RESPONSIBILITY to give all indie developers a decent chance.

But they won’t. It’s a business, a very successful one at that and we aren’t going to change their mind. They will give a handful of indies a decent break, and the rest of us will hear about that and be hopeful that sometime we’ll get our break and be on steam. And that is bullshit thinking right there.

So steam are only interested in a handful of indie games and are a detriment to everyone else? well I say FUCK STEAM.

There are a bunch of other decent ways to get games and we need to do more to convince gamers that they are cool. Crawling before steam and begging for permission on greenlight does nothing but show how desperate we are for steam’s audience. Let’s not get their audience like that, for one thing it’s not very indie, for another it won’t work for most of us, and finally it’s simply disgraceful.

Sure the IndieVanias, Desuras and IndieCitys of the world don’t offer quite as good a service as steam does. And direct sales can be tricky for gamers to keep track of but fuck it! we make awesome games and gamers are missing out because of their steam-goggles. There is a whole world of games outside of steam and gamers need to know about them, and be OK with buying them.

Steam aren’t going to do us ANY favours that don’t benefit themselves first. So let’s maybe stop depending on them so much, collect our dignity and work on how we can make an environment where anyone can sell their work on PC and have a chance at success.

Certainly not an easy task, people are loyal to steam and convincing them to get games elsewhere won’t be easy. But the difficulty in doing so isn’t an argument in favour of steam, if anything it’s an argument that we should have started sooner.


Area – description/rules

so here’s a game that was played during breaks when I was at primary school, it’s really fun and I’ve not seen it anywhere else (even on the net) so here it is:

What you need:

  • 1 netball court (nets not required)
  • 1 tennis ball
  • 2 or more people (preferably more, like 8, but many, MANY people can be fun too!)
Rough Game Description:

Area is a team game, each team takes an opposite third of the court and takes turns trying to throw a tennis ball into the other team’s semi-circle for points.

 

Rules:

here’s a picture of the court:

I’ve coloured the team zones, one team takes red and the other team takes blue.

  • To take a turn, a team member throws a ball from inside their team’s zone, and aims for the ball to land in the other team’s semi-circle. a point is scored if the ball touches the court inside a semi-circle (if a player drops the ball in their own team’s semi-circle, the other team scores a point).
  • players must try to defend their semi-circle by catching or blocking the ball.
  • if players throw the ball when outside their team’s zone it is a foul (so long as some part of their body is touching their team’s zone they are safe)
  • when a player fouls, the other team takes a point and it is then their turn.
  • No player should ever leave their team’s zone unless the ball is out of bounds.
  • the ball is out of bounds if it’s anywhere other than one of the team zones (that means the center third of the court, or anywhere outside of the court.
  • when the ball is out of bounds both teams can leave their zone and try and take the ball, when a player gets the ball then it is then their team’s turn and all players must return to their zone (no wrestling the ball from people!).
  • players must never enter the other team’s zone, even if the ball is out of bounds.
  • To start the game, place the ball in the center of the court and have all players enter their zones. each team agrees to all count from 3 to 0 together, and at 0 the game begins. since the ball starts out of bounds, the first team to rush out and claim it gets the first turn.
  • the game ends when an agreed amount of time has passed or a certain score is reached (for us it was game-over when break time ended 😉 ). the team with the highest score wins.

 

Notes, variations & suggestions:

  • as an alternative foul penalty, let the other team take a penalty shot, where they are allowed to throw from inside the center third of the court.
  • Players on a team don’t have to take turns when throwing, teams decide amongst themselves who throws next, or players can throw the moment they catch the ball if they think it will help the team.
  • try faking out the other team by letting them think a different player has the ball and throw when they aren’t ready.
  • any throw is valid, low, high, under-arm, over-arm, fast, slow, rolling, bouncing etc.
  • indoor courts are fine, but if you play on an outdoor court you can do sky throws if you’re good enough. 😉
  • if a ball is lost (it lands in a busy street or into that garden with the big dog) the game is over, unless you have another ball in which case it’s the turn of whichever team didn’t lose the ball
  • more players make the game more interesting! in some games half the fun is misleading the other team, and you can be more elaborate doing that with more players 🙂

I do recommend giving this game a try if you have a few people and a netball court handy. 🙂

finally, if you know this game by another name, please let me know!

 


SPLAT DEATH SALAD blog post, SPECIAL MAKING-OF EDITION!

— GAME: —

so I made a a game for 7DFPS called ‘SPLAT DEATH SALAD’, it’s a multiplayer unity game, and if you’d like to give it a go, head here and tell your friends to join you :).

— MAKING-OF: —

So a few people have asked me to cover how I went about doing the networking in unity and I said I’d make a post explaining it. it’s one of those issues that is a little tricky to get your head around in one go, so a lot of people (including myself) have put off learning it. but I set aside a week before the 7DFPS event to do just that, and it’s really not as scary as it seems. so here goes some talking about that!

The first thing to know is that the unity documentation covers everything you actually need, that’s kind of what it’s there for.

you should probably go ahead and bookmark this page right now 🙂

also, you’re welcome to look at the latest source for the game, or even the earliest backup I have of working networking if you want less clutter.

so then, the thing that often scares people off is NAT punchthrough, partly because anyone who is familiar with network gaming knows it’s a problem, and partly because the unity docs talk about it at some length. but there really isn’t any need to be scared, since unity takes care of it. here’s the code I use to initialise a server:

bool useNat = !Network.HavePublicAddress();
Network.InitializeServer(32, 25000, useNat);

not exactly a nightmare is it? and a little after that OnServerInitialized() will fire (assuming no errors). it’s at this point we can register our server with unity’s master server so other clients can find us (fyi; the unity master server is free to use for any and all unity projects).

void OnServerInitialized() {
   MasterServer.RegisterHost("name clients search for", "server's game name", "comment");
}

there, that’s a client set up! that’s one half of getting players connected down, the other half is getting a client to connect to that server. this is pretty much just as easy, first we ask the master server for a list of available servers to connect to:

HostData[] hostData = MasterServer.PollHostList();

we display this info to the user and let them pick a host from the list, then connect like so;

Network.Connect(hostData[selectedHostIndex], "password string");

and after that, OnConnectedToServer() will fire (again, we’re assuming no errors). at this point, we have 2 (or more) players connected across the internet. yay! as you can see, it really isn’t anything to be afraid of. I had laid out a week to explore this stuff, but I had the basics covered in about an hour without much difficulty. I just needed to get stuck in and stop dilly-dallying (like most all game-dev problems really!)

before I go onto how to get these players talking now that they are connected, I just want to point out it’s important to make sure you disconnect when players quit the game, something like;

void OnApplicationQuit(){
   if (connected){
      if (Network.isServer) MasterServer.UnregisterHost();
      Network.Disconnect();
   }
}

Ok, for sending information between players, I use RPCs (Remote Procedure Calls), this is one of 2 ways of sharing information between players, the other is State Synchronisation. but I’ve not tried that, RPCs were enough for me 🙂

RPCs basically work like function calls, you say “Run this function”, pass it some parameters, along with just who should run the function, and then the function is run for everyone who gets it. here’s an example:

networkView.RPC("LogMessage", RPCMode.All, "Hello World!");

what this does is tells everyone connected (because the RPCMode is ‘All’) to run the LogMessage() function, and pass it the string “Hello World!” as a parameter. so if everyone has a function set up that looks like;

[RPC]
void LogMessage(string msg){
   Debug.Log( msg );
}

then everyone connected will get “Hello World!” printed to their output log. oh, and the [RPC] is specifically a C# thing to make it so the function can be fired by RPC calls, for javascript I think it’s @RPC instead.

you can send a bunch of different things in RPCs; strings, floats, ints, Vector3s (maybe more types, I forget!). and AFAIK you can send as many parameters as you like too. so I use them for everything, players requesting match information from server, server providing match information, announcing that a player fired a bullet along with where, what type of weapon and what direction. I even use it for players to say where they are, where they are looking, what direction they are moving in etc.

it’s important to know that some of the RPCModes are buffered, that means if you send a buffered RPC call, it will be called for everyone who connects, even if they connect *after* the player who sent the call has disconnected. this can be pretty useful in some cases, I use it so players joining and leaving announce their information (avatar styles, player name), so whenever anyone joins they see all the players who are already connected without having to ask the server with their own RPC call.

that’s more or less it I think, obviously there’s more advanced stuff you can learn, but you can make a game with this stuff so it’s plenty, and if you want more you already bookmarked the networking part of the unity manual right? 😉


Stop being such an asshole to people who don’t start from scratch

I make games, lots of us do these days. and we are crazy productive too. mostly because we have tools that make it easier than it used to be.

some people like to imply that those of us who use easy tools are less skilled, or lazy. and in some cases that our games are less valuable because of it.

some people are assholes. and should shut the fuck up.

 

I won’t pretend I can’t relate to these assholes, back before I learnt how to make games, I was really passionate about my 3D art (it was originally my intention to never program at all, I was all about the visual art) I hung out on deviantArt and shared my work and it was cool. but then tools appeared that made certain things easier; poser, terragen and similar software let people make 3D models without even requiring an understanding of the 3D building blocks; faces, vertices etc.

I was seriously miffed, I had worked crazy hard to make character models, and these people had the nerve to submit poser models alongside mine as though they were equal? it wasn’t right, it wasn’t fair. I had worked hard and these people had barely worked at all.

 

Ladies and Gentlemen, if you find yourself thinking like this you are an asshole, and you are in the middle of a tantrum.

 

my particular tantrum lasted a few years. it gradually waned as I matured and gained more experience doing 3D art (both the hard way and the easy way). Ultimately I eventually realised, my prejudice against people doing things the easy way was a combination of petty jealousy, and a fundamental misunderstanding of what was important about my work.

The jealousy is understandable, it’s ugly but it makes sense. other people had similar or better results and didn’t have to struggle as I had.

The misunderstanding is where I really let myself down; in learning to make 3D, I had forgotten what was important to me when I started out in the first place. The actual process of crafting a 3D model was a skill that took effort to develop, and it’s a skill that I took a lot of pride in (and still do). I let that pride get in the way of what I developed the skills for in the first place; to realise my vision.

I had spent so much time amongst all the vertices and UV co-ordinates I couldn’t see past them on this issue. The people using poser were simply realising their vision, as I was trying to do.

I had assumed that because the skills required to do things my way weren’t required for people doing things the easier way, they weren’t as skilled and their work wasn’t as valuable as a result. I was an idiot for thinking it, and I was an asshole every time I voiced my opinion on the subject.

 

I’m going to say something, and it might blow some people’s minds, so prepare yourself;

THE AMOUNT OF EFFORT REQUIRED TO CREATE SOMETHING, HAS NO BEARING AT ALL ON THE VALUE OF WHAT YOU CREATE

just because something is hard to make doesn’t mean it is good, and likewise just because something is easy to make doesn’t mean it is bad.

for creations that require great effort, dedication and/or skill; we admire the creators. their acts are impressive. but if they could accomplish the same vision without so much strain, and don’t, these creators are fucking morons. and if they insist everyone else do things the hard way when it isn’t necessary, they are assholes too.

Personally, I use Unity. it’s a game engine and editor that has been put together, it saves me a ton of time. I don’t need to program a renderer for every game I make, I don’t need to study any particular model of physics to add collisions to a game, I DON’T NEED TO SPEND YEARS OF WORK TO BUILD SOMETHING THAT, WITH UNITY, I CAN MAKE IN HOURS.

I could make my own game engine if I wanted, I spent enough time in computing lessons, I dabbled with C++ enough to have a healthy appreciation of pointers and memory allocation. but why should I fuck with all that stuff if I don’t have to? I’ve written down hundreds of game ideas in my life, but at no point have I ever added “needs to be coded using <blah>, otherwise the game won’t be fun”  to a design doc.

is there value in writing things yourself? yes, but it’s value for you, your experience of creation. you have a more intimate connection to what you are doing. but I don’t make games to feel connected to my code,

I MAKE GAMES BECAUSE I FUCKING WANT TO MAKE GAMES

 

I use unity because whilst it may be easy, it does not limit my vision at all. I love Unity, it has been great for me personally and professionally. but I would drop the bitch in a heartbeat if I wanted to make a game and unity was holding me back, I’d grab the gnarliest, most unwieldy, abstract piece of shit tool available if it was the only way to make what I wanted.

it’s stupid to encourage people to do things the hard way if their creative vision isn’t hampered by simpler tools, if you do that it makes you an asshole.

But what really pisses me off? people who do this are turning newbies away from making games. or at the very least making our community less than 100% comfortable and welcoming for them. people starting out should be able to use whatever the hell they want, I like to suggest they try everything they can get their hands on, different tools are good for different jobs after all.

These people, starting out with a vision (even if it’s just to try something little and have a go) don’t need to see you being a prejudiced asshole. at best you are making their day worse without good reason, at worst you are giving people a reason to give up.

 

So, I’m pretty much out of points to make, I could go on swearing a bit more on the topic for some time, but I think you get the idea. There’s nothing wrong with doing things the easy way if it’s going to help you create what you want to create. and there’s nothing wrong with doing things the hard way if it helps you do things you want to do. If someone complains that they are limited by their tools, offer them an alternative by all means, but if they are happy with their tools and their creative output, don’t criticise them for their choice of tool, it’s an asshole move.

 

~~~~

Edit: “if they could accomplish the same vision without so much strain, and don’t, these creators are fucking morons.” – I wasn’t clear here, if you want to create something difficult when you don’t have to, I consider that part of ‘your vision’. you’re welcome to make your stuff however you like. it’s not my place to tell you what to do, especially in a post telling you not to do that to others. sorry if I offended anyone with this (not sorry at all if I offended anyone with the rest of it though 😉 )


Adventures in teaching wordpress tricks

so I’ve managed to get wordpress to build a list of games from blog posts in my ‘games’ category, here’s how!

No need to cry WP-chan! I figured out how we can be friends again!

first of all, everything here is based off of this, I suck at php and wordpress and my system is just a mod of that. so here goes!

Read the rest of this entry »