Monday 23 November 2015

Reflections on a practice production

Introduction

As you may or may not know I study game development and have just finished up my first year. Our final assessment piece was a practice production which ran for around 5 weeks. There were a few different themes to go by but we ended up with "4 player pub game". Going with this theme we created a cartoonish vehicle melee combat game named "Lava Dome Derby". The entire process was incredibly eye opening, and if you are planning a career around any sort of programming, I highly recommend doing something similar.


In the beginning...

The first thing we did was have a meeting as a group during lunch to discuss ideas. It didn't take long to reach a consensus that a car based combat game would be the way to go. Reasons included simple mechanics and the fact that unity came with a car controller out of the box, saving us programmers a lot of effort (however this turned out not to be the case as you will see soon enough). This was a fairly informal discussion though some basic notes were taken and contact details were exchanged. 

After this, we briefly split off to our separate classrooms. I started reading up on the unity engine, the other programmer started investigating the car controller, the artists started working on some concepts and the designers started organising our first proper meeting. 


The original concept had 4 unique vehicles


The first true meeting was focused on scope, schedule and preparation for presenting our pitch to a potential client (in this case, the teachers and staff). After our pitch we received feedback saying that our core ideas were solid, however the scope was probably too large considering the small time frame and it was suggested we stick to one polished vehicle as opposed to 4 average ones, which we agreed with. In the end we decided to go with the punching glove car.


The original arena concept featuring ramps which were later removed for misbehaving


Enter Production phase Alpha

This is where the tears and heartache start. Immediately on implementing the car controller we ran into a pretty nasty bug. If the player held the brake key long enough to bring the car to a stop, it would never start again. After a lot of digging, googling, and slamming heads against desks we admitted defeat and asked our Almighty Wizard of a teacher to try and help us out. After many confused looks and head shakes, he found the problem. It turns out the code that is shipped with Unity was bugged. There was a missing "else" statement that was supposed to reset brake torque...

It was around this point in production where I suffered several hard hitting incidents one after the other. This led to a decline in my mental and physical health which greatly affected my attendance and contribution to the team. Its the things you don't expect that can hurt a project the most. Never the less the group persevered and made excellent progress, implementing all core gameplay elements.


Enter Production phase Beta

The beta phase of production was where some cracks started to show in the teams foundations. This was the beginning of a rise in tension and breakdown of communication. Design specifications started to become vague requiring basic things to needlessly be redone several times, Artists were adding assets and changes without clearing it with anyone but each other, the designers were not seeing eye to eye on a few things and I was still absent quite a lot. However, having said that, we were still rather productive. The ramps were removed because they caused issues with collision and took up too much space. The power up system was also scrapped and replaced with a boost ability which had a 3 second cooldown. This greatly improved gameplay and added to the pace.

Another bug was discovered with the unity car controller, this time involving the reverse torque (we didn't get time to fix this either). Last and definitely not least, the map was redesigned based on feedback from both external play testers and in house testing. It was looking as badass as ever and featured a dropping centre platform that would end you faster than you could say "oh shi-". This gave the map a much more dynamic feel and added an extra gameplay element which forced you to be on your toes.


Behold, the glorious Arena v2


Enter Production phase Gold

As we entered gold we were starting to fall behind schedule and the teams patience was really put to the test. The previously mentioned tension and communication issues started to grow along with the project size. At one point we were working on about 4 different builds with no version control. This again caused things to needlessly be redone (The menu specifically comes to mind) and big changes were being made without everyone being informed.

Though it wasn't all bad news!

There was a game swap day prepared where the teams got to swap and test out each others game. We received some pretty conflicting, but overall, positive feedback. I wasn't there for that event but the other programmer introduced the tweaks that were requested.

Dawn of the final day, 24 hours remain

The map was once again redone, this time adding platforms around the edges that could also drop after a warning light went off and walls around the edges which could be exploited with the boost. While I wish this wasn't literally done on the last day, it did make a big difference and I was quite pleased with it, though it did initially introduce some problems with collision and causing wheels to get stuck (Though these were later resolved post production). I spent the rest of the afternoon adding the menu, UI tweaks, game timer, and victory screens. Lastly I merged all the builds together and added some public variables for the designers to tweak before heading off to provide support from home.


The final dome design


So what have we learned?

  • For the love of god use github or any other version control software, not google drive.
  • Use UML diagrams and flowcharts effectively. I know they are not fun but they really do help.
  • Be realistic in terms of scope verse time.
  • Have lead roles. This would have drastically reduced communications problems and helped maintain a constant and obvious direction.
  • If you are having problems, get help, don't cave.
There are more things but I haven't slept much these last few days and would like to remedy that. 

One last thing, despite all the negatives, we did way better than I expected and I am very proud of the team!

Sunday 6 September 2015

Some AI stuff for school


Steering

Flocking

I've had a mixture of the best and worst week of my life so no more typing

Wednesday 24 June 2015

Weekend Wrap Up #3 / LATEST CSS HACK

So it's not actually the weekend but I finally have some spare time to share my thoughts. If I don't share them here well then they'll just build up in my head and all sorts of bad things start happening.

Oh well onto item number 1:
Michelle Obama is trans, thus making president Obama the first GAY president as well as all the other things.

#1
While it's not exactly news that Michelle is fit as fuck, it has come to my attention that even rational and intelligent friends have somehow gotten their asses involved in this hideously dumb conspiracy theory (BTW by even given this theory validation, whether it be by exploring facts or using damning science, you ignore the fact that trans-women are WOMEN). Her hip to shoulder ratio is off? For gods sake have a look at any influential female athlete, or any hyper fit woman, I think you'll find that same most of the time.

#2
OK, so point number two is...who the fuck cares? If Michelle IS trans, what does that mean for you?
(spoiler alert: NOTHING). So let's go too far and say that Michelle is trans, have you noticed the climate recently? It's really hot, like factorials of the sun kinda hot. If you mention something about trans* people, you better damn well know what you're talking about. Trans women of colour suffer an incredible amount of unnecessary hatred especially compared to their white counterparts. So in short, even if you're just interested in the theory/debate, be advised, you are treading on thin ice. Keep this kinda stuff to yourself/Illuminati conspiracist friends.

#3
Here I am still listing things like it isn't 2015, and like you don't have a clue. If you fall in this category, I'm sorry, but unfortunately you are incredibly outnumbered.
The internet is a vast and wonderful place filled with basically every piece of knowledge you could imagine. Unfortunately, that means people like Alex Jones still get a voice. I'm also sorry for that (not my responsibility but someone has to take the blame). Here's a little trick I encourage you to try. If someone spouting potentially wrong information (or just any kinda unconventional wisdom (And by that I mean, use common sense)) takes your fancy, CHECK THAT SHIT. MAKE SURE YOUR SOURCES ARE CORRECT. There is nothing worse than repeating useless garbage that has already been confirmed false HUNDREDS OF TIMES OVER. (this also applies to GMO and Vaccines. Seriously, you can't be pro one and anti the other. If you are, either reflect very hard or EMAIL ME, which ever is easiest on your brain).

#4
Now with all things that you should already know out of the way, here is that CSS hack I promised.
Yes, its the one with the nice menu.

Now, I WARN YOU, THIS IS OLD SAUCE, THE ENCRYPTION METHOD IS WRONG. IT ENCRYPTS WITH THE SAME KEY EVERY TIME. Though on the plus side it should be safe straight off the bat (IE before 26/06/2015).

Hey, email me if you want one that doesn't crank up once VAC shows its (mostly ugly) head.

DOWNLOADER BEWARE:

if it is past 26/06/2015 YOU SERIOUSLY RISK BEING BANNED USING THIS
DON'T EMAIL ME ABOUT BEING BANNED
But please email me for anything else!
ImTalkingDownTown@gmail.com
Download (GH)

http://guidedhacking.com/showthread.php?6707-My-super-old-yet-updated-external&p=33881#post33881

Thread (With source)
REMEMBER, CHEATERS NEVER PROSPER


Saturday 30 May 2015

Early version of my css multihack


As you may know, a while ago I showed off my old external multihack for css. To much disappointment of the masses, there was no download link, just a boastful video. Well wait no more, for here is a super primitive version that still works to this day! (it will be two years old on June 12th)

I'm moving house so I packed up most things and am solely using my laptop. This doesn't happen very often because it is an HP laptop, so it overheats like a motherfucker, but buried deep within the my documents folder was an old and ugly version just waiting to be released upon the unsuspecting public.

So what does this particular version do? Well, most of the things.


It includes:
*Crappy aimbot (right mouse, minor bugs)
*Dot/Skeleton/Weapon ESP (Buggy, Run css in a full screen window)
*Crappy triggerbot

Unlike the final version, it doesn't have a funky clickable menu so INSERT turns it on/off.

When I've moved into my new place and I'm all nice and settled (and if my PC even still works) I will release the encrypted version.

It's probably detected by VAC so I wouldn't use it online (besides, cheating online is lame)

Download - AdFly
Download - GuidedHacking.com
 
Feel free to leave a comment or email imtalkingdowntown@gmail.com

Monday 23 March 2015

Weekend Wrap Up #2/Alpha wallhack tool release

Hey all. Welcome to the weekend wrap up #2.


It is time!

While I didn't get as much done as I wanted I'm happy enough with what I have to share the pre-alpha-bug-testy release. It is a bit more complicated than it needs to be so here are the steps required to get it going. (This will be addressed in the next release)

  • Download  the exe and dll here (dropbox dl)
  • Inject the dll into your game (currently only directx9 is supported) using an injector of your choice (I prefer winject)
  • Press delete to bring up all the info (this also loads your cleaned dump files again, useful if you need to quickly add something to favourites)
  • Press insert to start and again to stop logging
  • In the folder where your games .exe is there should now be a folder called dumps
  • Put mdldmpSorter.exe in this folder and run it to start the sorting
  • Choose your filters

99% of the time you will want to type 'y' when asked this(There is also no error checking on this so make sure it's lowercase!). Players, weapons, vehicles, buildings, basically anything 3D uses stride 32. 
Next you will also be asked if you want a min numvert/primcount, Experiment to see what is useful for you. 
Save your file as "test". At the moment it only looks for test.fin when it goes to display the results so don't forget this part!

  • Back ingame hit delete a couple of times to reload the new cleaned dump file
Controls
Use the up and down arrow keys to cycle through the models and the left and right arrows to increment/decrement the current selection by 100.
Press shift+b to save the current model to the favourites list (or click the add button on the UI but make sure you read the known bugs list up ahead)
Press F6 to save your list and F7 to load it.
Home key toggles UI
End key sets the model selection to 0
Alt switches between drawing the models in the FIN list and the models in your Favourites list.
Middle mouse moves the menu to the cursor.

Congratulations you can now create your own wall hacks with no programming experience!

KNOWN BUGS:
The UI only works properly in fullscreen mode for now. This will be fixed in the next update

The next version will be completely redone from the ground up and I'll actually plan it out properly so it uses OOP quite heavily.

I may put up a video on how to use it because it is a bit of a complicated process. God damn I am so tired. I'm going to sleep, happy hacking.

Feel free to leave a comment or email imtalkingdowntown@gmail.com



Sunday 15 March 2015

Weekend Wrap Up #1

Welcome to the first Weekend Wrap Up!

The aim of this series is to show off whats new on the tools and other projects I have been working on over the last week. This should hopefully keep things more constant so I don't lose interest again. Anyway, enjoy the first edition!

The model logger is sooooo close to being released for a bug test! I could have published it now but it would have all been keyboard driven and very painful to use. Instead I decided to work on a Form class so people could use some basic UI instead of remembering a bunch of hotkeys. I'm trying to make the UI as robust as possible seeing as I'll probably end up using it in my uni course. The form is movable with the mouse by clicking on its header, like your normal windows (though my implementation still needs a lot of work on that, its very fragile haha). Also like your normal windows it has a close button. This one is blue.

The next thing to be implemented is the favourites list. This is going to be a very useful, if not THE most useful feature of the Logger. It will allow you to save a specific list of models picked out from the cleaned files. This basically means you can build your own wall-hack without any programming knowledge! Huzzah! Once that is complete I think it'll be time to ship an alpha!

Here are some more screenshots:

Testing UI

Testing the button clicks, adding to fav list, form move functions etc

Resizing the form on the fly

Feel free to leave a comment or email imtalkingdowntown@gmail.com

Sunday 8 March 2015

Encrypted External CSS Multihack

Hello again. I just thought I'd show off my old external hack. This hack came about under different circumstances to most.

Most hacks I just make for fun, and really,most of the fun comes from the reversing side rather than the actual coding. I'm not really a fan of cheating online, I think it kinda ruins it. Not just for others but also for yourself, though maybe that's because I enjoy the thrill of winning legitimately (I used to play Day of Defeat: Source competitively, ahhhhh those were the days).

So the story goes like this:
I had a friend staying with me for a while and I thought it would be fun (and somewhat productive) to test my hack on a LAN. After a bit of doodling around and testing all the bits, we decide to play crimsonland. Everything seemed fine. Until the next time I went to log in to steam to find my previously clean account VAC banned! "What the fuuuuuuuuuuck" I remember were the exact words that came out of my mouth. How could it have been vacced? We were playing on a LAN! I had -insecure set in the launch options! Well after about 2 seconds of googling I found a thread that says that VAC3 doesn't care about the -insecure flag and is now much more aggressive with external hacks. The only way to stop it on a LAN is to play with sv_lan 1 (Remember this! very important!). 

Bummer.

So naturally this annoyed me quite a bit. My first thought was to just go after VAC, but my reversing knowledge was just not up to par (and probably still isn't). Instead I thought to write an encryption class which would pick a random key at run-time and encrypt strings, functions, and destroy things that no longer need to be used. This seems to work so I'm thinking that because VAC3 doesn't care about -insecure and I didn't realise, it was probably gathering signatures as I developed the cheat :\. This method seems to pretty effective against signature scans however its still vulnerable to static analysis.

Hopefully by learning from my mistakes, you won't repeat them.

Anyway, enough jib jabbering, here's the video


Feel free to leave a comment or email me at imtalkingdowntown@gmail.com

Wednesday 4 March 2015

Model Logger Update

I had some time to work on my logger tonight. While it might not look like much has been done, trust me, there has. I finished the first version of the sorter/cleaner and ironed out some bugs in the dumper. The cleaner still has a LOT of work to be done but at least it has basic functionality. Here are some screenshots:

Initial Injection

Dumping

The infamous sorter. Just using "rfgi" for the name seeing as its not really important right now.

Drawing logged models. FIN is just a .fin file (meaning finished/final product)

Stepping through the list to see that it is working

Feel free to leave a comment or email imtalkingdowntown@gmail.com

Tuesday 17 February 2015

Updating my model logger

If any of you have ever tried making chams you know how much of a pain in the ass it can be to find the model you're after. Incrementing through numverts, strides, and primcounts one at a time wasn't too unbearable when working with lower poly models, such as characters and weapons in CSS, but more modern games can have tens of thousands per model (even when they're far away!). I already wrote a much more convenient logger and posted the source to GuidedHacking, however it was incredibly rushed and VERY poorly optimized.

Well now I am in the process of remaking it but with a bit of a different approach. The plan is to just get it to copy everything that comes through DrawIndexedPrimitive into "chunks". Once a chunck has been loaded up with 250 entries it gets dumped to a folder in the games directory called "dumps". It doesn't bother checking for duplicates just yet because that was one of the major contributors to slowdowns in the previous version.

And...that's about all it does for now, but it looks very clean and organized unlike the last one which was...ugly to say the least.

Hopefully the sorting and rendering will be done and ready to show in the next week :)


Feel free to leave a comment or email imtalkingdowntown@gmail.com

Wednesday 11 February 2015

Potential return?

So it has been maybe years since my last post and to be honest I kind of forgot about my little blog here...well good news for all those who have been eagerly awaiting my return (0). I feel I am at a level where I can actually start making interesting and relevant posts.

I think my first post back will be about Red Faction Guerrilla and my recent struggle to get the damn thing to actually play thanks to the DRM volition chose to use.

So stay tuned if you are interested in seeing reverse engineering posts as I feel that is the only direction this blog can take.