Can't believe it's been 18 days since I last posted...@_@ Been really busy with applying to jobs and what have you, and I guess I kind of forgot about updating my blog. So I got about 10 applications out right now, since I got back home. Been working on programming various new tools and such for a new project. Altered a bunch of new stuff as well, which has been an excellent project to take up time.
I've been working on my GUI XML tool, and it's come a VERY long ways...I spent about 10-13 hours working on it over the course of thanksgiving, along with altering the Parser Library class to include a few more variables and methods. The GUI tool I made before used a system where you would click on a save and display button to show your current updates, and it only saved part of the variables in the system, not all of them (which would explain some problems I had in Harper's Gate). So I changed a lot of how it saved and loaded content, and gave it an automated system similar to my Level tool. Over the course of the day, it was mostly testing the program, and adding in fail-safe systems into the Parser Library...In fact, I set up a system to help save space in the XML files. It reduced the lines of XML by about 20-30 percent, and also helps with keeping track of all the default variables. It's rather nifty. ^_^
Also, I figure since potential employers are viewing this, I should avoid saying things like shazam bitches on here...>.> Not very professional of me, and since there's a lot of hell being raised about things like facebook posts, I will assume the same for blog posts. However, as a note to said potential employers...I would be an awesome and fun addition to your team! ;-P I'm a very high energy person, and if I got a job, I know I'd work my tail off to get everything done in a timely, and professionally executed manner. So don't judge me by my blog language...
Anywho, I'm signing off so I can go update my wordpress...o_O Take care!
Friday, November 23, 2012
Monday, November 5, 2012
360 input stuffz and cheat code...coding. o_O
So yesterday I decided to buy a cheap 360 controller (Only on the cost...Razr Onza Tournament Edition ftw), and test out the input in XNA 4.0. To say the least, I got a lot of stuff done with it, and am very fond of my new controller, despite not having a 360...although now I can enjoy a good game of Borderlands 2 with a controller instead of a mouse/keyboard. ^_^
Aside from that, I got some code in that makes the controller vibrate every 2 seconds, it's rather fun...although if you don't change the vibration back to 0, 0, it'll keep vibrating. o.o Only way to fix that is unplug it.
Other than that, I found more about the variables used for the controller, like how the analog sticks use a normalized vector (basically max of 1 in either x or y) for its direction, which is very logical and useful. The triggers also use a float to determine how far pressed they are. I notice some FPS games basically use a hair trigger for shooting, and it drives me nuts that you can basically tap the right trigger or left trigger, and it'll fire. It seems like something that could easily be customized by the user, how far they have to press before firing. I suppose there's hardware out there that's for it, kind of like the resistors on the Onza sticks.
Anyway, as for the last thing in my title, I set up a system in my game for making cheat codes using a string...>.> So basically what it does is use a timer, whenever you click a button, the timer is reset to 0, once it hits 60 (1 second at 60 FPS), it resets the combo text. So basically if you can type in a combo within 1 second of each press, you can create a cheat code...I decided to use the epically amazing Konami Code as my example, so the combo text is basically "upupdowndownleftrightleftrightba", although this can easily be shortened if you really wanted to...Once the konami code is inputted, it displays a lovely little text of "SHAZAM BITCHES!" under all the other mumbo jumbo in my test.
So that's basically the display of the program. I created a TextObject class, which basically draws a single string to the screen with a black background. This is the basic class for the object:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace InputTesting360
{
public class TextObject : DrawableGameComponent
{
public string text;
public Vector2 pos;
public SpriteFont font;
protected Game1 parent;
protected bool vibrate;
protected int timer;
protected const int maxTimer = 60;
protected string combo;
protected GamePadState prevState;
protected string output;
public TextObject(Game1 game, SpriteFont font) : base(game)
{
this.parent = game;
this.font = font;
vibrate = false;
timer = 0;
output = "";
}
public override void Update(GameTime gameTime)
{
//Might make the text follow the mouse around, or maybe the controller.
GamePadState gps = GamePad.GetState(PlayerIndex.One);
bool a, b, x, y, dup, ddn, dlf, drt;
a = gps.IsButtonDown(Buttons.A) && prevState.IsButtonUp(Buttons.A);
b = gps.IsButtonDown(Buttons.B) && prevState.IsButtonUp(Buttons.B);
x = gps.IsButtonDown(Buttons.X) && prevState.IsButtonUp(Buttons.X);
y = gps.IsButtonDown(Buttons.Y) && prevState.IsButtonUp(Buttons.Y);
dup = gps.IsButtonDown(Buttons.DPadUp) && prevState.IsButtonUp(Buttons.DPadUp);
ddn = gps.IsButtonDown(Buttons.DPadDown) && prevState.IsButtonUp(Buttons.DPadDown);
dlf = gps.IsButtonDown(Buttons.DPadLeft) && prevState.IsButtonUp(Buttons.DPadLeft);
drt = gps.IsButtonDown(Buttons.DPadRight) && prevState.IsButtonUp(Buttons.DPadRight);
text = "Packet#: " + gps.PacketNumber;
text += "\nController 1 is connected? " + gps.IsConnected.ToString();
text += "\nLeftStick Vector: " + gps.ThumbSticks.Left.ToString();
text += "\nRightStick Vector: " + gps.ThumbSticks.Right.ToString();
text += "\nLeft Trigger: " + gps.Triggers.Left;
text += "\nRight Trigger: " + gps.Triggers.Right;
text += "\n" + output;
if (a)
{
combo += "a";
timer = 0;
}
if (b)
{
combo += "b";
timer = 0;
}
if (dup)
{
combo += "up";
timer = 0;
}
if (ddn)
{
combo += "down";
timer = 0;
}
if (dlf)
{
combo += "left";
timer = 0;
}
if (drt)
{
combo += "right";
timer = 0;
}
if (combo == "upupdowndownleftrightleftrightba")
{
output = "SHAZAM BITCHES!";
}
timer++;
if (timer >= maxTimer)
{
timer = 0;
combo = "";
//output = "";
}
prevState = gps;
}
public override void Draw(GameTime gameTime)
{
parent.batch.Begin();
parent.batch.DrawString(font, text, pos, Color.White);
parent.batch.End();
}
}
}
Aside from that, I got some code in that makes the controller vibrate every 2 seconds, it's rather fun...although if you don't change the vibration back to 0, 0, it'll keep vibrating. o.o Only way to fix that is unplug it.
Other than that, I found more about the variables used for the controller, like how the analog sticks use a normalized vector (basically max of 1 in either x or y) for its direction, which is very logical and useful. The triggers also use a float to determine how far pressed they are. I notice some FPS games basically use a hair trigger for shooting, and it drives me nuts that you can basically tap the right trigger or left trigger, and it'll fire. It seems like something that could easily be customized by the user, how far they have to press before firing. I suppose there's hardware out there that's for it, kind of like the resistors on the Onza sticks.
Anyway, as for the last thing in my title, I set up a system in my game for making cheat codes using a string...>.> So basically what it does is use a timer, whenever you click a button, the timer is reset to 0, once it hits 60 (1 second at 60 FPS), it resets the combo text. So basically if you can type in a combo within 1 second of each press, you can create a cheat code...I decided to use the epically amazing Konami Code as my example, so the combo text is basically "upupdowndownleftrightleftrightba", although this can easily be shortened if you really wanted to...Once the konami code is inputted, it displays a lovely little text of "SHAZAM BITCHES!" under all the other mumbo jumbo in my test.
So that's basically the display of the program. I created a TextObject class, which basically draws a single string to the screen with a black background. This is the basic class for the object:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace InputTesting360
{
public class TextObject : DrawableGameComponent
{
public string text;
public Vector2 pos;
public SpriteFont font;
protected Game1 parent;
protected bool vibrate;
protected int timer;
protected const int maxTimer = 60;
protected string combo;
protected GamePadState prevState;
protected string output;
public TextObject(Game1 game, SpriteFont font) : base(game)
{
this.parent = game;
this.font = font;
vibrate = false;
timer = 0;
output = "";
}
public override void Update(GameTime gameTime)
{
//Might make the text follow the mouse around, or maybe the controller.
GamePadState gps = GamePad.GetState(PlayerIndex.One);
bool a, b, x, y, dup, ddn, dlf, drt;
a = gps.IsButtonDown(Buttons.A) && prevState.IsButtonUp(Buttons.A);
b = gps.IsButtonDown(Buttons.B) && prevState.IsButtonUp(Buttons.B);
x = gps.IsButtonDown(Buttons.X) && prevState.IsButtonUp(Buttons.X);
y = gps.IsButtonDown(Buttons.Y) && prevState.IsButtonUp(Buttons.Y);
dup = gps.IsButtonDown(Buttons.DPadUp) && prevState.IsButtonUp(Buttons.DPadUp);
ddn = gps.IsButtonDown(Buttons.DPadDown) && prevState.IsButtonUp(Buttons.DPadDown);
dlf = gps.IsButtonDown(Buttons.DPadLeft) && prevState.IsButtonUp(Buttons.DPadLeft);
drt = gps.IsButtonDown(Buttons.DPadRight) && prevState.IsButtonUp(Buttons.DPadRight);
text = "Packet#: " + gps.PacketNumber;
text += "\nController 1 is connected? " + gps.IsConnected.ToString();
text += "\nLeftStick Vector: " + gps.ThumbSticks.Left.ToString();
text += "\nRightStick Vector: " + gps.ThumbSticks.Right.ToString();
text += "\nLeft Trigger: " + gps.Triggers.Left;
text += "\nRight Trigger: " + gps.Triggers.Right;
text += "\n" + output;
if (a)
{
combo += "a";
timer = 0;
}
if (b)
{
combo += "b";
timer = 0;
}
if (dup)
{
combo += "up";
timer = 0;
}
if (ddn)
{
combo += "down";
timer = 0;
}
if (dlf)
{
combo += "left";
timer = 0;
}
if (drt)
{
combo += "right";
timer = 0;
}
if (combo == "upupdowndownleftrightleftrightba")
{
output = "SHAZAM BITCHES!";
}
timer++;
if (timer >= maxTimer)
{
timer = 0;
combo = "";
//output = "";
}
prevState = gps;
}
public override void Draw(GameTime gameTime)
{
parent.batch.Begin();
parent.batch.DrawString(font, text, pos, Color.White);
parent.batch.End();
}
}
}
Unfortunately I don't know how to add in code snippets, if I did, I would totally do it. -_- But yeah, this, added onto the following Game1 class would give you everything you need to load the game, excluding the TNR14 variable. That's just a TimesNewRoman size 14 font I use...
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace InputTesting360
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
public SpriteBatch batch;
TextObject text;
SpriteFont font;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
/// <summary>
/// Allows the game to perform any initialization it needs to before starting to run.
/// This is where it can query for any required services and load any non-graphic
/// related content. Calling base.Initialize will enumerate through any components
/// and initialize them as well.
/// </summary>
protected override void Initialize()
{
// TODO: Add your initialization logic here
base.Initialize();
}
/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
batch = new SpriteBatch(GraphicsDevice);
font = Content.Load<SpriteFont>("TNR14");
text = new TextObject(this, font);
Components.Add(text);
// TODO: use this.Content to load your game content here
}
/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}
/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
// TODO: Add your update logic here
base.Update(gameTime);
}
/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Black);
// TODO: Add your drawing code here
base.Draw(gameTime);
}
}
}
Labels:
C#,
C++,
cheat codes,
cheating,
computer,
creation,
games,
Java,
Programming,
programs,
video,
video games,
xbox,
xbox 360,
XNA
Subscribe to:
Posts (Atom)