Author Archive

More GameSparks and Unity Goodness

So if you’ve read the previous post and have a GameSparks project set up with leaderboards and achievements and a Unity project that handles adding achievements and scores you’re all set to complete the basics by adding functionality to display the high scores and the achievements a player has earned.

Add a new scene and set it up like the following:

leaderboards

All that’s needed is a few lines of code to display the scores in the leaderboard. Open the Leaderboards class and add the following:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using GameSparks.Api;
using GameSparks.Api.Messages;
using GameSparks.Api.Requests;
using GameSparks.Api.Responses;
using GameSparks.Core;

public class Leaderboards : MonoBehaviour {

	// Use this for initialization
	void Start () {

        LeaderboardDataResponse response = new LeaderboardDataRequest().SetLeaderboardShortCode("HighScoreLeaderboard").SetEntryCount(10).Send();

        if(!response.HasErrors)
        {
            foreach (var entry in response.Data)
            {
                Text player = GameObject.Find("Player" + entry.Rank.ToString()).GetComponent<Text>();
                player.text = entry.UserName;
                Text score = GameObject.Find("Score" + entry.Rank.ToString()).GetComponent<Text>();
                score.text = entry.GetNumberValue("Score").ToString();
            }
        }
        else
        {
            Text player = GameObject.Find("Player1").GetComponent<Text>();
            player.text = "No Scores";
        }
	}

    public void OKButtonClick()
    {
        Application.LoadLevel("MainMenuScene");
    }
}

If you don’t have any scores other than the one from the previous post you should add some players through the GameSparks Test Harness and log some scores. To do so use the RegistrationRequest and AuthenticationRequest calls:

new player2

 

authentication

then add scores using the PostHighScoreEarned call under LogEvent:

posthighscore

Make sure you make all three calls in this order or your scores won’t be posted correctly.

On to achievements. I created a couple of additional achievements from the one created in the previous post:

achievements

Of course, we’ll need a scene to display them in:

achievementsscene

The graphic for each achievement is a UI Image object. We set the tag for the graphic to the achievement’s shortcode so we can find it when the scene loads.

Create a script and attach it to the scene’s Canvas as usual. Add the following to it:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using GameSparks.Api;
using GameSparks.Api.Messages;
using GameSparks.Api.Requests;
using GameSparks.Api.Responses;
using GameSparks.Core;


public class Achievements : MonoBehaviour {

	// Use this for initialization
	void Start ()
    {
        new ListAchievementsRequest().Send((response) =>
        {
            if (!response.HasErrors)
            {
                foreach (ListAchievementsResponse._Achievement achievement in response.Achievements)
                {
                    //if achievement hasn't been earned grey out icon
                    if (achievement.Earned.HasValue && !achievement.Earned.Value)
                    {
                        Image graphic = GameObject.FindGameObjectWithTag(achievement.ShortCode).GetComponent<Image>();
                        graphic.color = new Color(1f, 1f, 1f, .1f);
                    }
                }
            }
        });
	}

    public void OKButtonClick()
    {
        Application.LoadLevel("MainMenuScene");
    }

}

The ListAchievementsRequest call gets all the achievements set up in the system with a member for each achievement that tells if the player has earned it. If he hasn’t we change the alpha component of the color for the achievement’s graphic to indicate that the player hasn’t earned it.

That’s all it takes to get basic achievements and leaderboards working in your game. The project for this post is located here.

There is a lot more functionality in GameSparks that I’d like to cover. I’m thinking I might dig into some of the social functionality like friends and messages next. If you’ve looked into GameSparks and there’s something that you’d like to see covered let me know.

Integrating GameSparks into a Unity game

A big selling point of video games is having things like leaderboards and awards/achievements. Unfortunately, implementing these things is a lot of work. Tools like Azure Mobile Services and 3rd party offerings make this a little easier, but it’s still a lot of work. I originally started looking at Azure Mobile Services, via bitrave, but recently stumbled across something that looked like it might be a bit easier, being built specifically for what I was looking to implement – GameSparks. I’m going to go over using the SDK in a couple of posts, each one being relatively short and sweet.

Obviously, the first thing that needs to be done is to download and install the SDK. Rather than rewrite something, just follow the instructions here and come back when you’re done. Go ahead, I’ll wait. :)

OK, so you should be all set up and able to authenticate against the service. The first thing we’ll need is some way to log in to the game. We have to have an ID for the player in order to track things like leaderboards and achievements. We’ll need a scene to allow the user to enter the data for a user ID and password:

login screen

Create a new scene and place some UI controls similarly to the layout in the picture. Notice that I’ve put a GameObject in the scene for the GameSparks functionality as the instructions above stated. Once you have the scene create a Login class and add the following to it:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using GameSparks.Api;
using GameSparks.Api.Messages;
using GameSparks.Api.Requests;
using GameSparks.Api.Responses;
using GameSparks.Core;

public class Login : MonoBehaviour {

    public InputField LoginIDText;
    public InputField EmailText;
    public InputField PasswordText;
    public Text LoginErrorText;

    public void CreateAccountButtonClick()
    {
        //ensure all items were entered
        if (LoginIDText.text.Length > 0 && EmailText.text.Length > 0 && PasswordText.text.Length > 0)
        {
            RegistrationResponse response = new RegistrationRequest().SetUserName(LoginIDText.text).SetDisplayName(LoginIDText.text).SetPassword(PasswordText.text).Send();

            if (!response.HasErrors)
            {
                Global.UserID = response.UserId;
                Application.LoadLevel("MainMenuScene");
            }
            else
                LoginErrorText.text = "All information must be entered";
        }
    }

    public void OKButtonClick()
    {
        //verify credentials
        if (LoginIDText.text.Length > 0 && PasswordText.text.Length > 0)
        {
            AuthenticationResponse response = new AuthenticationRequest().SetUserName(LoginIDText.text).SetPassword(PasswordText.text).Send();
            if (!response.HasErrors)
            {
                Global.UserID = response.UserId;
                Application.LoadLevel("MainMenuScene");
            }
            else
                LoginErrorText.text = "Incorrect credentials";
        }
    }

    public void ExitButtonClick()
    {
        Application.Quit();
    }
}

Note the references to the GameSparks namespaces added at the top. We’ll need these to send requests to the service. We have the members that we’ll link to our controls so we can retrieve the text in them and 3 methods for handling clicking on each button.

If the player is creating an account, we send the info to the GameSparks service using the RegistrationRequest object and assuming we get a valid response set a global (yes, I use globals. Don’t hate! :D) with the ID so we can use it later, then load the menu scene. If the player already has an account we use the AuthenticationRequest object and, if the credentials are correct, load the menu scene. Fairly straightforward stuff. Once you have the code entered, save and go back to Unity. Drag the class from the Project tab onto the Canvas in the Hierarchy and hook up all the events and drag the input fields onto the Login class members in the Inspector. If you’re not sure how to do this, head over to the Unity Tutorials site and learn the basics of working in the Unity IDE. If you’re really stuck let me know and I’ll try to walk you through the process. :) The interesting stuff happens next.

Before we can use the Achievements and Leaderboards scenes we need to set up some achievements and leaderboards in GameSpark. In the GameSparks Configurator, click on Achievements, then the Add New “+” graphic:

gamesparksachievements

Add some info for the achievement:

achievementinfo

Click the Save button and you’re done with that part. You can add as many other achievements as you’d like of course.

Next we’ll need an event that’ll be called when an achievement is earned. Click on the Events item in the Configurator and create a new Event:

achievementevent

The ShortCode is the same as the Name here since the text area isn’t wide enough to show it. :( We’ll send the Player’s ID and the shortcode for the achievement to a chunk of Cloud Code that’ll save the achievement. After you save the event, go ahead and click on the Cloud Code item. Under the Bindings | Events item, click on the PostPlayerAchievementEarned item and add the following code:

achievmentcloudcode

Save that and that’s it for the GameSparks side of things.

How do we tell GameSparks the player has earned an achievement? Good question, let’s implement that now. Create a new scene that we’ll use to fake earning an achievement (and adding to a leaderboard soon):

testscene

Add a script file call GameSparksTest and add the following to it:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using GameSparks.Api;
using GameSparks.Api.Messages;
using GameSparks.Api.Requests;
using GameSparks.Api.Responses;
using GameSparks.Core;



public class GameSparksTest : MonoBehaviour {
    public Text ResponseText;
    public void TestAchievementButtonClick()
    {
        LogEventRequest request = new LogEventRequest(); ;
        request.SetEventKey("PostPlayerAchievementEarned");
        request.SetEventAttribute("PlayerID", Global.UserID);
        request.SetEventAttribute("AchievementID", "PlayedGame");

        ResponseText.text = "";

        request.Send((response) =>
        {
            if (!response.HasErrors)
                ResponseText.text = "Achievement Added";
            else
                ResponseText.text = response.Errors.JSON;
        });

        if (ResponseText.text == "")
            ResponseText.text = "Response not received";

    }

}

Fairly straightforward. Create the LogRequest object, set the name of the event to be called, set the parameters, and send it off.

Leaderboards work in a similar fashion. Head back to the GameSparks Configurator and set up an event:

leaderboardevent

Then set up a leaderboard:

leaderboard

That’s it for the GameSparks side of things. Go back to the GameSparksTest class in your Unity project and add a handler for the TestLeaderboardButton (making sure to hook it up to the button):

public void TestLeaderboardsButtonClick()
{
    LogEventRequest request = new LogEventRequest();
    request.SetEventKey("PostHighScoreEarned");
    request.SetEventAttribute("Score", 10);

    request.Send((response) =>
    {
        if (!response.HasErrors)
            ResponseText.text = "High Score Posted";
        else
            ResponseText.text = response.Errors.JSON;
    });

    if (ResponseText.text == "")
        ResponseText.text = "Response not received";
}

It doesn’t get much simpler than that I think. You can use the Test Harness section of the GameSparks site to pull the data for the achievements and leaderboards for the player to verify that the data was saved. Using the Test Harness is pretty straightforward. You’ll have to make an authentication call, then use the List AchievementRequest under the Player section and the ListLeaderboardsRequest under the Leaderboards section, filling in the necessary information in the JSON.

I’ve put the Unity project for this post here. You’ll have to fill in your own GameSparks credentials of course. Feel free to ask any questions about what we’ve gone over.

Next post I’ll add functionality to pull and display the achievements for a player and display the leaderboard information. Take a stab at figuring it out beforehand if you’d like.

An Open Letter To MS About Indie Games

Disclaimer for those who found their way here for the first time: this isn’t just another “Let’s bash MS about how badly they’re treating indies on Xbox One”. I’m not a fanboy or MS hater. Quite the contrary. I’m a former XNA MVP with a couple of books about developing games using XNA under my belt, current ID@Xbox MVP, Xbox gamer, and professional .NET business software developer (and indie game dev by night Smile). I’ve been helping game developers for somewhere around 15 years as an admin on a number of game dev forums, including the unofficial Xbox One indie dev FB group (where a lot of the issues I’ll be talking about have been discussed). I’m a concerned citizen of the Xbox and game development community that is sharing my thoughts and concerns on the Xbox One indie dev situation.

 

As one of the many indie game developers hoping to develop for Microsoft’s Xbox One, it’s been a frustrating couple of years. You guys certainly didn’t start off on the right foot with the reveal. E3 after that didn’t really clear things up much either, and that was where we expected to get all the game development information the reveal didn’t contain. The vague and often contradictory information, what little of it that has escaped from Redmond, that has flowed from MS spokespersons hasn’t ceased since then. What we were expecting was a next-gen XBLIG to go along with the next-gen console. What we got, it seems to most of us, is a re-branded XBLA. That means the vast majority of us are left hanging out to dry, while the favored few get dev kits and access to the tools to make games for the console.

From what I’ve seen of developers talking online there are a couple of big problems with the program, most of which are easy, relatively speaking, to fix:

  • Lack of dev kits
  • Communication (both ways)
  • The infamous Parity Clause
  • (Seeming) lack of personnel

 

Dev Kits/Inability for devs to get onboard

This is the biggest problem. You had everyone chomping at the bit to sign up for the ID@Xbox program and, though actual numbers have never been shared AFAIK (the number that keeps being talked about in public seems to only be the developers with dev kits, which I don’t understand. Why not make yourselves look really awesome by talking about the number of developer that want to develop for your platform, not just those you’re allowing?) I’m sure there are a couple of thousand developers waiting for dev kits. Obviously you can’t give them all kits, but that’s not what most of us are expecting. You did it with XBLIG, so why can’t we get going with deploying and testing on retail boxes? With the supposed flexibility of X1 running all those different OSes, surely this isn’t out of the realm of possibility? Obviously there are a lot of teams that would have to sign off on this, but you made it happen with XBLIG, so I’m sure it can happen with X1. With the big push this generation of getting indies on consoles, it would seem more of a no-brainer than it did with the Xbox 360 and all of the teams involved should want to sign off on this sooner rather than later.

Communication

Email – the last email I can find from the ID@Xbox team is from March. So much for monthly updates. I understand you guys are probably busy, but if you say there’s going to be monthly updates, you need to follow through. Surely someone could spare a half-hour to draft something. Of course, since there’s such an emphasis on secrecy (why, no one can figure out) I guess there’s just nothing to say publicly. That would be a 2 minute email and would go far to making the community feel like you really care about them.

The other issue with email is the lack of response to developers with questions. From what I’ve seen there’s not even an auto-reply. Compare this with the stories of the ease and quickness of getting responses from Sony for developers in the PS indie program.

Blog – the ID@Xbox blog, despite being under the developer section, seems to be more directed at gamers than developers. Of the 6 entries on the blog from March ‘14, none of them are really relevant to developers. They all discuss games that are in the works from developers who have been lucky enough to get dev kits. While we love to applaud other indies that are getting games done, we don’t need you to tell us about them, at least not on the blog. There are plenty of gaming news sites for that. What we need you to tell us are things about actually creating games – when more dev kits are going to be available, when the supposed “develop using retail boxes” thing is going to happen (if it does, since many of us think it’ll never happen at this point), when tools like Unity and GameMaker will be available for us to start using (even if we don’t have dev kits – surely testing on our PCs could be possible using them!?), what other tools are being discussed at being able to target X1 that indies will be able to use, etc. Using the blog to pimp other developers games is just plain silly. I doubt few of the people that even know about the blog or visit it are gamers so why use it to talk about games?

Summits – it was talked about that other summits would happen besides the 3 that have. Even for the 3 that happened it was said that we’d be able to get video of sessions. Again, the issue with that seemed to be the lack of ability to keep the info hush, hush. Why couldn’t something like tracking the IP of our dev machine and only allowing a login from that IP to a page that streams the video be done? Get everyone registered to the problem under NDA and make it happen! I highly doubt most would risk breaking the NDA and being banned from the program to reveal the super-secret info from the Summit.

Forums – MS has had developer forums forever so how hard could it be to get one up and running for us? Again, get NDAs out there for everyone and get the forums going. Of course, we’ll need something to actually talk about so access to the tools needs to go along with this. Even without the tools we have developers discussing things on the unofficial FB group that’s been set up and doing it on official forums would be a step in the right direction.

Along with the forums, giving devs some space for PR would be a great thing as well. Even a simple page that can contain developer information, a way to get feedback to the developer, and a list of games they have on the service with links to allow gamers to buy them offline would be awesome.

Parity Clause

While it’s probably not going to be a problem for most of the one or two-man teams, the restriction on when and where devs can release games on X1 as well as other systems has to be one of the worst things MS has come up with. It’s literally pushing devs away from releasing games on the console. Instead of welcoming devs with open arms to make a new console as attractive to both devs and gamers as possible, you’re standing there with a stop sign and clipboard with a checklist on it making sure the developer has followed some arbitrary set of rules to be allowed the privilege of getting their game on the console. What could possibly be the reason for implementing such a thing?!? How was it not obvious that devs would see this as a barrier to want to get their games onto the console? While there have been exceptions to the rule, why not just dump it completely and say “We’re happy you want to get games onto the Xbox One and will do everything we can to make it happen”? You’re already behind on this generation, why make it worse by creating rules that will continue to allow Sony to move ahead of you? I’m guessing the clause was developed by someone with no experience in the game dev or gaming world.

Personnel

Some of the communication problems seem to be a result of not having enough personnel to handle them. Chris Charla is about the only public face we see and that’s fine. However, with a program that has, at a minimum, hundreds of developers that need to be taken care of, emails that need to be sent to answer developer questions, someone to draft and publish blog and email updates, etc., this is going to require people, and not just one or two of them. Surely the person in charge of staffing a team have the monetary resources to put enough people on the team to do the work that needs to be done? MS spends millions on things like events to shows off the program’s games, how can they not spend some to ensure the program is run properly?

If it’s an issue of not being able to find the right people, I volunteer myself as a developer relations person. Open-mouthed smile

 

The Good Stuff

Now that I’ve gotten all that off my chest, let’s talk about some good things…

Xbox One Hardware

The console itself has more than enough power for most indies and I’ve had no problems with mine since I bought it. It seems flexible enough as well that tweaks here and there should make it even better. Comparing raw power with PS4 is irrelevant since most games and probably no indie game will come close to maxing it out. It’s never come down to power anyway, it’s all about content. It seems that some good work has been done to bring companies onboard with nice apps and content. Just don’t be content with what you’ve done. Keep bringing companies in, it’s a self-reinforcing thing. The more companies you get onboard, the more attractive it’ll look for those not onboard. Bring indies on board and the console will look more attractive to gamers. Winking smile

SmartGlass & Kinect

Kinect never really got used the way it could have been with the Xbox 360. With the improvements with this generation, I hope we’ll see a lot more innovative use of it, and I would expect this to come from the indie devs more than anywhere else. I’ve seen some nice use of it on upcoming games and hopefully what Chris said will include all of us indies, not just the dev kit kind.

SmartGlass is another piece of hardware that has a huge possibility in gaming. From tactical displays in strategy games to things like inventory management in RPGs, there are a lot of things that can be done with it. We’ll have to wait and see once more indies are onboard though.

Tools

The announcements of Unity, GameMaker, and Unreal being available for Xbox One developers has made a lot of us happy. It doesn’t quite make up for the loss of XNA, but it’s a start. Here’s hoping more great announcements like this continue.

 

Overall, I think the general feeling of the community that Sony love indies and MS doesn’t obviously isn’t true. MS led the pack with bringing indies onto consoles in a big way with XBLIG. We’re just hoping that it can continue into the current generation a bit larger that it is so far. There are a lot of incredibly talented indies out there and they have awesome games that they want to put onto the X1. It’s up to you guys to make it happen though. It’s a win-win for all of us.

Initial Thoughts on the MS/Unity Partnership

I posted the following in response to a post by Mary Jo Foley, but figured I’d also put it here (especially since I got “Your comment contains words or phrases associated with spam and will not appear on the site until it has been checked by a moderator.” (is XNA now spam?) when I submitted it and don’t know when it’ll appear):

 

"But when chided for not announcing details of plans for supporting indie gamers on Xbox One this week, Guggenheimer deflected that criticsm."

We’re not looking for details, just a concrete answer. The E3 presentations showed Sony giving a lot of love to indies, while MS gave virtually none. With MS abandoning XNA this was tough to swallow. Then yesterday there was – http://youtu.be/qdpAM4GV6oU

A lot of us took this to mean that there would be some announcement that gave indies some love. When the @unity3d Twitter account tweeted "Anybody following #bldwin? Something interesting coming up soon.. #unity3d" a lot of thought there might finally be a resolution to the indie issue on Xbox. Unity3D is primarily an indie (both small and large) tool for game development. Imagine our surprise then when we see this (from here – http://news.xbox.com/2013/06/xbox-one-unity-announcement):

"Developers who build games published by Microsoft Studios now have access to Unity tools for Xbox 360 and Xbox One free of charge and can create interactive 3D and 2D experiences."

It’s not as if regular indies have a shot at getting Microsoft Studios to act as their publisher. But when we think we’ve been completely abandonded at the end of that page is:

"As we look ahead, we look forward to sharing more information on our plans to help empower everyone from the independent game developer looking to make publishing to the console easy to the app developer who wants to bring new experiences to the television."

The problem with this is that between the whole "no self-publishing on Xbox One" and the previous quote limiting the Unity tools to devs that have an association with Microsoft Studios, we’re still left wondering what MS is doing? Does "independent" mean "John Smith in his basement creating games in his free and is currently using XBLIG to publish on Xbox 360" or does it mean studios like Double Fine that can do a Kickstarter and raise millions of dollars on their name and background alone? If the former, why can MS just come out and say it and give us a break? I personally am fine with waiting if I know at the end I’ll be able to continue doing Xbox development without having to take a 2nd mortgage on my house to fund it. Just give us a concrete answer; don’t keep stringing us along.

The quick mention of a contest during the Keynote led some of us to believe that MS and Unity might be planning a new version of the DreamBuildPlay contest, just using Unity3D instead of XNA. That would have been awesome. Alas, it’s Windows and WP8, no Xbox – http://unity3d.com/contest/windows

I get the feeling MS is just flailing about, trying to do good, but only half-way succeeding. They had an awesome thing going with XBLIG. While there is a lot of junk that made it’s way on the service, there are also a lot of great games, some of which have generated huge amounts of money for both MS and the devs, letting some devs move into full-time game development for a living. This is probably the dream of a lot of indies and we were hoping MS would continue to give us a chance to realize that dream. Right now, though it’s like we’re dogs sitting under the table, hoping for some crumbs to drop and MS is teasing us by holding a big chunk of prime rib out and then yanking it back.

I’ve been supporting MS and helping the community ever since the XNA beta and would love to do so for years to come, but it’s hard to plan which way to go without definitive answers. That’s all we’re looking for.

Thoughts on indies

So the whole “Indies won’t be able to self-publish on the Xbox One” thing has gotten me thinking about exactly what is an indie. This has been done to death on tons of other sites by people much wiser in the game development industry than myself, but one more opinion isn’t going to hurt, is it? And I need to start posting more here anyway, so let’s give it a shot.

Let’s start with Wikipedia’s definition:

“…developers that are not owned by a publisher. Independent developers retain operational control over their companies, pipelines, and organizations and often may work with proprietary engines or other proprietary software. These teams may range in size from single individuals to major companies with hundreds of employees.

Independent developers may choose to work with one or more game publishers or to self-publish their titles.”

The only problem is have with this definition is the working with publishers part. Once a publisher is involved you normally have to give up control of the game in some way. The publisher may require you to make changes to the game that you don’t want to make and, since they’re the one with the money, you usually have to do what they say. That’s when you’re no longer an indie in my opinion. When someone else can tell you have to make your game, you’re not independent.

 

Indies and money

I’ve seen posts by people in forums, Twitter, etc. that if you’re trying to make  money as a game developer you’re not a true indie. This has to be the stupidest notion I’ve ever heard of. I guess this is the same kind of thinking about starving artists are the only real artists and every successful artist must be a sell-out. Any sane, rational, semi-intelligent person with the slightest bit of common sense knows this is nonsense. The two things are not mutually exclusive. The rise of many of the more successful game developers who are still doing their own thing and not relying on publishers proves that you can be indie and still make money.

 

Indies and platforms

So the other day news went around about how some < insert expletive here > loser took it upon himself to make a PC version of Ska Studio’s game The Dishwasher: Vampire Smile simply because no PC version existed. He claimed it wasn’t piracy, but a “restoration of justice”. Given the quality of his written word in quotes I’ve seen, the guy either is not an English-as-a-first-language person is not all there mentally. Maybe it’s a bit of both.

In any case, this brings up the craziness surrounding those devs that are targeting platforms other than PC. A lot of small studios are cranking out mobile games because it’s cheap and easy. Making money from mobile is still a tricky business though because of the glut of games on various mobile platforms. PC game dev is still relatively simple is you’re making low-end, simple games because the majority of game PCs can handle them so you’re not limiting your target audience. I’ve not seen people question the indie-ness of devs targeting these platforms or even other less-popular ones such as the Ouya (I still think of the Kool-Aid Man when I hear this “Oh, yeah!” Smile. In the case of Ska Studios, they recently announced that they would, in fact, be porting D:VS to PC. All of the sudden, the cries of the un-washed masses were resounding with “You’re just doing it for the money!” and other insanity. What’s wrong with people?!? Why did it become about money in this case? Was it because people assumed that Ska was afraid of losing money from people who downloaded the illegal port rather than their port? Was it because Ska was targeting more than one platform with their games? Was it because a lot of people on the internet are insane? (I’m voting that one)

 

The future of indies

Despite all the craziness around the PS4 and X1 reveals regarding indies being able to target them, I think indies are going to be the go-to point for the unique, original games as publishers get even more leery about backing new IP. I was happy to see that there would be at least one new IP on the X1 and hope other studios are able to bring something to the console other than < IP > < some number greater than 1 >. If MS does the smart thing and brings out a new version of XNA Game Studio (read: something that doesn’t require C++) and allows indies to get games onto it, and continues the Dream-Build-Play contest to bring those talented indies into the limelight, I think it’ll be a great time to be an indie. I’m still hoping to join the ranks of James Silva, James Petruzzi, and other great indie game devs named James. Smile

Xbox One, XNA, the Future of Indie Game Development, and Bad “Journalism”

So Microsoft’s new console, ridiculously name the Xbox One, was unveiled last week to a less than overwhelmed audience. While there was plenty of applause during portions of the reveal, the aftermath of the presentation left the majority of gamer community like this:

The reveal seemed to be about several things:

  • the Xbox One is your one stop entertainment device
  • it’ll play sports games, racing games, and the next Call of Duty
  • it’s all about the cloud
  • Kinect is your friend (or it better become your friend since it’s always going to be there even if you don’t want it around)

The first bullet point seemed to be a huge turnoff to almost everyone, despite the fact that it’s something you can completely ignore if you don’t care about it. It was almost another facepalm moment reading and listening to everyone putting so much emphasis on a feature that they’ll probably never use. I might be able to understand if it were something that would be an impediment to using the console, but that doesn’t seem to be the case.

Having a Kinect bundled with every console was also mostly met with negativity. Partly I think this is because it’s going to increase the cost of the console and partly the fact that it was stated that it always has to be one (mainly to allow you to just say “Xbox on” to start the console it appears). I understand Microsoft trying to make the device more attractive to both gamers and developers, but with the recent backlash about Kinect snooping on people and gather all kinds of data that has the possibility of being obtained by other people (why this is a big deal I’ve yet to figure out since the data it gathers doesn’t appear to be of the kind that could be used against a person or be embarrassing, unless you’re the type of person to be doing stuff in front of it that you wouldn’t do in public) I think MS is making a mistake here. The crop of Kinect-enabled games this generation was mostly ignored. The only one I really got into more than a little bit was UFC Trainer and that lasted maybe two months.

Of these, only the 2nd bullet point would be something gamers care about and the two genres are not among the biggest and it seems CoD is not the big draw it used to be. In addition, the fact that it’s not backward compatible was a huge turnoff to many. Why this is the case, I’m not sure. I’d be willing to bet the majority of gamers won’t be playing Xbox 360 games for very long after they get the new console.

Additional confusion came about after a couple of statements were made that weren’t completely clear – the XBLA and XBLIG channels would be going away; all games would be lumped together (hopefully with better discoverability tools!) and indies would not be able to self-publish on the new console. This led many to believe that it’s not going to be possible for indies to get their games on the console at all, since there’s about .000000001% possibility for the average indie developer to get a publisher interested enough in their game to pick it up and publish it.

Granted, this seems to have been cleared up a bit since Don Matrick was quoted on Kotaku and other sites saying

“We’re going to have an independent creator program. We’re going to sponsor it. We’re going to give people tools. That is something we think—I think—is important. That’s how I started in the industry. There’s no way we’re going to build a box that doesn’t support that.”

Of course, many people are now saying that the left hand of Microsoft doesn’t know what the right is doing and that people within the company are contradicting themselves. Some days you just can’t win I guess.

It appears that indies are going to be ok on the Xbox One (I’m going to start shortening it to X1 I think since I think those who are using the derogatory "Xbone” are showing themselves as haters or jumping on the anti-MS bandwagon. To those people, this.) Still, I’m not committing myself to the X1 until after E3 and Build. I really hope MS does the smart thing and brings back XNA Game Studio in some form. XBLIG has made them a good bit of money and brought indie game development to the level where people can make a decent living off of it.

World Screen Screenshot

Well, it’s getting there:

WorldScreen

New Dungeon Editor Screenshot

Some progress:

  • Added 2nd layer for regular and secret doors
  • Triggers (X in screenshot) and traps (square in screenshot) now rendering
  • Load and save working, using sharpSerializer since normalize XmlSerializer doesn’t like arrays, among other things.

 

DungeonEditorScreenshot2

Dungeon Editor, 1st Iteration

Behold my awesome graphical skills! :) It’s got a long way to go, but it’ll do for now:

 

DungeonEditor

Thoughts on Stat Types and Skills

So I’m thinking of going with just a few types of stats for the dungeon crawler I’m prototyping:

Strength – how much a character can carry and modifies the damage done with melee weapons
Dexterity – helps determine if a character hits during combat and how well he performs skills like lockpicking
Agility – how well a character moves and dodges during combat and performs skills like climbing
Constitution – helps determine a character ability to soak up damage, whether in combat or due to things like poison. Fairly standard.
Intelligence – overall stat for character’s mental abilities, includes will power in resisting magical spells like illusions, ability to learn spells, etc. I can’t think of a better term for this.

I don’t want to overdo this, but I want some flexibility and “realism” (quoted because I mean realistic in the game world, not necessarily in this one :D). Some RPG systems lump agility and dexterity together into one stat, which I think doesn’t fit. A character could be a great lockpicker but horrible at dodging blows in combat or a great swordsman but doesn’t climb very well, so one stat for both is kind of silly.

For skills, the usual dungeon crawler types of actions will need to be done by a character, besides combat. Lockpicking, the ability to find things that don’t want to be easily found (traps, secret door, etc.), climbing (maybe, for getting out of pits if I implement them), sneaking up on other entities. I’m not sure how deep I want to go here. Implementing skills means dealing with allowing a character to become better at them, and I’ve never really liked many skill progression systems. “Realistically”, a character would get better at things the more they do them, as in games like Dungeon Siege. That’s a good bit of work to handle. Less realistic is allowing a character to “train” at skills by spending skill points. Easier to implement, but just feels wrong.