Jump to content

  • Log In with Google      Sign In   
  • Create Account

Sean T. McBeth

Member Since 11 Sep 2000
Offline Last Active Today, 01:02 PM

#4804669 Arm Wrestling Tetris

Posted by Sean T. McBeth on 30 April 2011 - 12:11 AM

So, after many years of screwing around with programming games, I finally decided to just sit down and make a whole one, one with all of the standard parts, and maybe a little something extra. I built a basic, 2-player Tetris game, with one snag: you play the game by arm wrestling your opponent using a special rig. I got the idea from someone from one of the Philadelphia tech blogs asking me if I could build them a Tresling rig. I started the project, I contacted the original author of Tresling, he said he was cool with it as long as we didn't call it Tresling, the tech blog dropped the project (with no reason why), so I kept my work for myself. Check out the game in action. Here is another video of my bald head... erh, of me explaining the concept a little to my first opponent.*


This took place at my workshop, Hive76. I did all of the programming (C# and .NET 4.0 in Visual Studio Express) and artwork (Photoshop CS4). One of the other members at the space did all of the music, using a couple of Korg synths, a Casio MIDI electric guitar, and Reaper (though he said he didn't like Reaper. He uses Cubase at home, but we needed to record the music at the last minute at the shop). A third did Street-Fighter-esque match voice-overs (you can't hear those here, unfortunately), and helped me with construction when I got pressed for time. I built the control rig around the internal circuit board on a standard keyboard (seriously, it's super simple, experiment by using a wire to connect different combinations of pins and you'll be able to figure it out form there).

Anyway, if you live in the Philadelphia area, probably your only chance to ever play this game will be tomorrow from 8pm to midnight. If you're interested, check out the Hive76 website for our location.


*On a completely unrelated note, this guy didn't recognize me, but he interviewed me for a job several months ago, but eventually decided I wasn't a "good cultural fit". In other words, I didn't fit the culture of not being paid very much.


#4790262 Where do game developers get ideas from?

Posted by Sean T. McBeth on 24 March 2011 - 11:39 PM

I rip off ideas I see other people doing.


#4775987 I got beat up by a cop

Posted by Sean T. McBeth on 18 February 2011 - 11:57 AM

I typically don't side with cops on these things, but damn dude, you were asking for it.




#4775100 Quit my job today

Posted by Sean T. McBeth on 16 February 2011 - 02:27 PM

No wife, no kids. I have friends that will put me up, and actually I think it might be fun to work on some of my projects while I travel across the country visiting my friends. My parents have offered to let me crash back home if it comes to that. Actually, I think they really want me to come home, but that's a different story.

I live just outside of Philadelphia right now. I spend a lot of time in the city at Hive76, a shared workspace where I tinker with hardware projects and manage their events.

I started in IT as a QA tester, and quickly (like, within 3 months) parleyed that into a development job. I've basically worked on ASP.NET web applications the entire time, with brief side-stints in Java web apps and C# desktop apps along the way. I pretty much know C# inside and out, and am pretty solid with SQL on MS SQL Server. One thing I *do* still enjoy with programming is data analysis and abstract data visualizations. Skipping my the job I just left, my last two jobs I was the lead programmer on a few different projects with small teams, doing a lot of business analysis as well.

Some of it is the lock-in. I really, really hate XML-based markup languages. I find them fragile and pedantic, especially ASP.NET. I think ASP.NET hides way too many of the implementation details, in some weird attempt to make life "easier" on the developer, that actually just make it harder. But, given that most of my experience is in web dev, it's pretty much all the work I'm going to get. And given that most of it is ASP.NET, that's also what I'm likely to get.

Some of it is corporate culture, and by that I mean a complete lack of understanding that developers are assets and not liabilities. This industry has an extremely high turn over rate, and we all know the gender imbalance issue. I don't know for sure really causes those things (I think it's a lack of respect from management to employee), but to me they are pretty huge signs that something is fundamentally wrong. I've worked in a lot of different types of companies: engineering firms (both industrial and architectural), consultancies (commercial, government, military, etc), small and large, and there has always been a constant factor of a middle manager somewhere needing to justify his existence by tightening the screws on people. I quit jobs because I was asked to do something that I didn't think was ethically sound, gotten in to huge arguments with coworkers over the whole, "if we don't do it, someone else will, so we might as well get paid" thing. And I hate arbitrary rationalization, "the business wants it this way". It's sick, all around.

I've tried very hard for the last two years to work within the corporate system to get out of programming, and it just hasn't happened. It always comes down to, "help us Obi Wan, you're our only hope," and because I'm apparently incapable of emotionally compartmentalizing my work life from my private life, it gnaws on me until I cave and save the day. And then I'm stuck in a programming position again. And then management doesn't adjust their expectations and now expects me to do both the analysis at my old rate and the new programming. And then I get burnt out, find a new job, and repeat.

For years I was saying the same thing you guys are saying, "Oh man, wish I had the courage to do that." Then I realized, what is the worst that could happen? The absolute worst thing that could happen to me is the bank could repossess my car. Holy crap! That's so many degrees above starving to death in a gutter as to not even be comparable. We live in the developed world, we can afford to take risks like this. We probably have a duty to do so. The giant corporations of the established rich people aren't going to just let us change the world for the better, we're going to have to find our own way, and that means taking risks.


#4774640 Quit my job today

Posted by Sean T. McBeth on 15 February 2011 - 02:59 PM

For the last two years, I've basically been in an ever increasing spiral of depression over the fact that I hated my job and had grown to hate the menial work of programming that pretty much consists of 80% of all work. I jumped around on projects and new jobs trying to deny it, to find some kind of secret sauce that would fix it all ("Maybe I just need a different environment, maybe I need to get away from this shitty code base."), and it only served to make me want to wall myself in my room and never come out again.

So I quit. I'm going to quit programming for a living. I haven't had any fun programming in the last 3 years because I've been too caught up with programming for work that when I get home I'm spent. I might end up flipping burgers, or I might end up a freelance photographer, or something. I don't really know right now. But I'll be damned if I write another God damned bug ticket or estimate another iteration or deal with another pedantic asshat who won't shut up about the differences between classes and objects, even though I know what they are and just misspoke that one time, "would you please shut up, I'm trying to actually get to a point here".

I've got my rent covered for the next 3 months, I've got a friend willing to put me up after that, of the stuff I have I can probably sell a lot of it because I don't actually use it that much, and there are plenty of ways to make some spare cash on the side. We'll see what happens.


#4635058 How do you keep focused on your code?

Posted by Sean T. McBeth on 16 April 2010 - 12:06 PM

I follow a basic execution process called the OODA Loop. Extreme Programming, SCRUM, whatever-we're-calling-the-process-today, are all just different tools (stand-up meetings, TDD, pair programming, etc) plugged into this model.

I use it at home and I impose it on my team at work (they don't specifically know this is what I'm doing, but neither is it important or necessary that they know, they just do what I say and it happens). There is no one starting point for all of this, there are multiple sub-processes that occur in parallel and overlap each other. The major driving process is the largest iteration loop -- once every two weeks we set milestones for releases. Usually this is costumer-driven, either from discussing needs with the sales managers or reviewing demos with us, but sometimes I set them based on what I know needs to be done just to make the project work.

Once a day, I enumerate our tasks, based on our milestones. It works out to be a typical stand-up meeting. I set priority for the tasks, then delegate the tasks to my teammates and myself appropriately to keep us all busy and to ensure the highest priority tasks get done first. If we run out of tasks... wait, that's never happened. These tasks are anything that needs to be done, from making policy decisions on security protocols to specific defects in the bug tracker to scheduling time to test the project.

Multiple times per day, we complete tasks and remove them from the task list. We keep each other informed on what tasks are completed when they are completed. Even though tasks are assigned, the task board is open, so if someone runs out of tasks, they go to the board to find more on their own. Sometimes, if certain tasks get done earlier than expected, or are taking longer than expected, I will reshuffle the priorities and assignments to account for the change.

We perform testing and have demos and discussions with the client to see where we are with regards to meeting their needs. This often changes over time, either because the client didn't know what they initially wanted, or because they changed their mind. It doesn't matter, we change direction as quickly as possible. Never dwell on what those changes mean. You never know from the start what the project will turn into. It's better to change quickly and early when you get more and better information than to worry about how wide sweeping the changes are. The fact that change is destructive is beside the point, what you worked on yesterday has no bearing on today, you should only care about getting the project done.

I say this because humans in general have a problem with getting fixated on sunk costs. Say you go to a movie, pay $8.00 to get in, and find out in the first 10 minutes that the movie sucks. What do you do? Do you stay because you already spent the money and you'd be "wasting it" if you left? Or do you leave because that money is gone no matter what you do and nothing good will come out of watching a crappy movie? The best decision is to leave before the crappy movie sucks away more of your life, but most people don't do that because people give too much credence to the past.

The point of how this applies to programming, especially with personal projects, is that you will get to a point where you realize that you made a fundamental design mistake early in your project that is preventing you from progressing. You will be tempted to work around the mistake because it would be a "waste" to throw away all of the code you wrote. But it's not a waste, you've already spent that time, and the design flaw is still there. Eventually, you'll start to find excuses not to work on the project because you dread approaching the design flaw. The longer you live with a design flaw, the more it costs you.

All that matters is the end result of the project. Code boldly. Do not be afraid to make mistakes. I see a lot of beginner programmers dead-lock on coding because they can't figure out "the right way" to do something. Nobody knows the right way. We have ways that have worked for us and we know that other ways won't work at all, but nobody has a definitive "right way" to do things. You *will* make mistakes, so it's better to reach those mistakes quickly, learn from them, and move on.

Observe what needs to be done, Orient yourself to the path of completing those tasks, Decide on what to do and when to do it, and Act on those decisions. Iterate and recurse this process.


#4314148 Creative ways to get currency into a game economy?

Posted by Sean T. McBeth on 15 September 2008 - 06:33 AM

If you wanted to take on a real challenge, you could simulate a reallistic, free market economy. In the real world, "currency" is any convenient item for trade with a relatively stable and agreed-upon value. We use currency because direct barter is inefficient. Any good currency is:

1.) Relatively rare. As Iron Chef Carnage wrote, it's about the effort it takes to obtain it. If it takes almost no effort to obtain a certain amount of the currency, then it's a pretty useless currency. Dirt would be bad. Water might work if our society were severally water restricted. Silver and Gold ended up being used in the real world because it takes considerable effort to mine it out of the ground.
2.) Yet, relatively available. If a currency is too rare, it's too valuable to trade easily. The value of the most basic unit of currency must be small enough to buy the cheapest item. You can't buy a loaf of bread with diamonds, because the smallest diamond is still much more valuable than even a large loaf of bread. Silver ended up being used more often than Gold because it was more readily available than Gold -- an important consideration for a growing population.
3.) Stable in value and ultimately usefull for some purpose in its own right. Again, it's about the effort it takes to obtain a certain amount of it. If obtaining the currency becomes easier over time without any required increase in the skill of the user, then your economy won't be able to produce enough goods to meet demand unless the price of the goods increases. Paper "fiat" money only works because people expect it to retain its current value, despite the readily available evidence that it has never, does not, and will never remain stable in value. See WWII era Germany or the recent situation in Zimbabwe for what happens when currency inflates out of control. During WWII, inflation had gotten so out of control in Germany that people were burning paper currency notes for heat because it burnt longer than the wood or oil they could buy with it.
4.) Relatively durable. This shouldn't be a problem for a game. But in general, something that rots or degrades does not make a good currency. High-quality cheese would make a bad currency, both because it rots and because it can be readily consumed with very little utilitarian benefit gained.
5.) Generally desirable as a medium of trade. Basically, everyone has to agree that the currency is "good". In general, if the market has no confidence in the currency, then the people will not use it; they will find a more suitable replacement regardless of what you do. If your users are expected to trade gold for rare items they find, but you violated one of the previous 4 rules and have made your currency unsuitable for trade, then the users will not want to trade gold for their items.

These "rules" have an interesting implication. Given no pre-defined currency, people trading in a free market will define their own, and it will naturally adhere to the points I defined. One must only implement a system for trade and a system for advertising item prices in whatever desired conversion rate to any other item. One item will almost surely be in nearly universal demand, yet in relative scarcity in relation to other items in universal demand. And where someone does not actually want the item itself, they would still collect it because so many other people want it and will readily trade for it.




PARTNERS