Garry Ware

I already talked about Garry Ware in a previous blog post. But there, I will write its own post.

How I thought of it

I was frustrated by Fretta. The cycling gamemodes concept is a great idea for Garry’s Mod. But each gamemode was frustrating for various reasons.

For those who don’t know, Fretta is a base gamemode where coders can append their own gamemode if they adapt it on Fretta’s system. Players vote for the gamemode they want to play at any time, and are forced to vote after a certain timelimit in the gamemode.

An outdated concept where everything orbits

Bomb Tag is a great gamemode, but it lacked (at that time) player action. I use to play Team Fortress 2 because of its constant action, because you don’t need to wait to play unlike CS:S. Bomb Tag draws players into inactivity after they get killed. It had various problems because of players joining in the middle of a game, or given the item while they haven’t spawned yet.

Laser Dance was quite pity for me, mostly because of the poor gameplay, and because when playing with HDR on, there’s no way to target the enemies.

If we look from far, all gamemodes require the players to kill each other. I mean, the concept is very old. That’s one point, I wanted to make a game where you didn’t need to kill anyone.

A flaw because we are in Garry’s Mod

The second thing was, we are in Garry’s Mod. Anyone can program it’s own legal cheat script because Garry’s Mod allows you to freely code any script. So in Sniper Wars for example, or Laser Dance, cheaters pretty won at all games because an aimbot is easy to code or to obtain. It was litteraly « who has the best aimbot ? » match. So that’s the second point : Players wouldn’t possibly cheat by scripting.

First Person Shooter

One idea came into mind. I had two DS games, well actually, one DS game and one GBA special cartridge to plug in a Nintendo DS. It was WarioWare : Touched ! and WarioWare : Twisted ! . Those games were basically frenetic minigames where you had to perform an unforeseen quick action in a short timelapse, over and over. It utilizes the Stylus and Microphone, or the 1-axis Accelerometer. In the case of WarioWare : Smooth Moves, it uses the Wiimote.

Note that WarioWare : Myself wasn’t announced when I made Garry Ware !

The problem was, we are in a multiplayer environment, and a First Person Shooter. How could I make that playable ?

Everything was based either on :

  • Either do I need skill or practice to win that game (Calculate, Get to the top, Shoot in the right order) …
  • Or would it be Musical Chairs, so we have an objective but not enough for everyone (Break one chair, Listen up) …
  • Finally, would I take the right decision to avoid being ejected or of the ring (Don’t touch the sky, Don’t move, Avoid the balls).

It hold itself together. Technically, every player would have what I did call when I made that game, an « achieved » state and a « destiny » state. Players would start in a certain achieved state, that could be changed at any time, but would be validated as soon as the destiny state is applied.

For example, in the game Work as a team, Break all crates, players would start with an unachieved state. Then when they will break a crate, they will go on an achieved state, to indicate that they have contributed to the objective. Then, if all crates are broken, everyone gets their achieved states validated. But, if time runs out and crates remain, then, everyone’s achieved state are reverted to unachieved and they are validated, indicating everyone lost, because the objective was to break all crates.

Kilburn’s contribution

The original Garry Ware suffered from flaws. Especially, the map size was either too small or too big because of the numbers of players in the server. Kilburn addressed that problem by creating rooms for minigames.

Basically, the main map is meant to contain a room with boxes, and a flat checkerboard room. Kilburn allowed the minigames to use either those two rooms according to the minigame’s needs. Then, the game will choose which room size to use according to the number of players.

He also made making minigames alot easier thenks to a flourish of functions that help us getting a table of all possible landmarks in a certain room, and to choose a certain number amongst them, along with making hooks easier to put in place.

Several very complex and elaborate minigames are his.

Conclusion

The concept hold itself. Players have a tendency to always want to aim at other player’s heads in gamemodes. What if they use their own head ? I don’t think it’s a bad idea to put IQ-based minigames in a first person shooter. It is itself hard because you need to think about the answer, but put yourself in the right 3D position in order to announce your answer easily when you’ll get to aim at the answer to validate it.

The game suffers from flaws at this time. The problem currently is due to the way I knew tables at this time. I didn’t know about Garbage Collector, and it seems that the game stutters in some cases because of the way I manage tables.

I am also amazed at how gamemodes in Fretta become popular very easily. While elaborate gamemodes fail because of advertisement, the Fretta base gamemode pretty encourages coders to adapt their lone gamemode for it, just because it becomes easily popular when distributed through the official Garry’s Mod Beta SVN, or if a Fretta server with this gamemode on is popular.

Garry’s Mod is a great opportunity to create your own game. I have a tendency to hate mods on Source Engine because you need to install then, and in the end, not much players are on the servers … while there are many players on this officially distributed third party mod. Things spread fast.

Tags: ,

No Comments

My Suite Stuff was replaced

I organized a hunt in my suite, and according to the demo file I made of it, it was done on 10th of August (it was actually 9th of August night if we compare with New York).

But on the 10th of August (for real this time), I checked in my suite, added some stuff like a bookcase and more flower pots, and checked out. I must have wandered around in the Tower.

Then I went checking in again, and when approaching my door, nothing was loaded. It always happen, we have to wait for our suite to load. But I was surprised to see that the suite was empty, but not really : There was an item that I never bought : A cs_office Couch. It was placed outdoor in front of the TV, but nothing else in the suite, no trunk, no bed.

Replacement

So, I checked out, and waited one day so that the server could restart.

Then I checked in again some minutes ago. The couch and the TV were still there, so I cleaned up my stuff. It didn’t help. At first, I couldn’t use the trunk, but I moved it a bit and used it, and it only contained a duplicate of the TV.

The weird thing is that a few days ago, I could ask an admin to restore my account because data was lost. But this is another problem, I still have my currency. Remember, I haven’t disconnected to check in the suite the other day, the suite worked fine in the same game session.

So, I wonder if I will recover my stuff. I still have the demo file, so I did a Demo Smoother Drive and took a video of every item I had using Fraps, and then extracted each revealant image using a video viewer. I had new items since then but I don’t bother, the new items I bought for my suite must be like 105 GMC worth of furniture, no big deal.

I wonder if I’ll get my stuff back.

Tags: ,

No Comments

DepthHUD Radar

Hey !

I mentioned it on the last post, but I’m gonna write a post about that.

DepthHUD Radar

A while ago, I had a 3D radar, which was somehow 3D. It fact, it was a 3D radar rendered with sprites and lines. It was quite usable, but that was only after I fixed all the code errors and optimization problems from the radar I downloaded on Garrysmod.org.

Months afterwards, after completing Garry Ware to a potential final version, I kept watching lots of playthrough of Metal Gear Solid. That reminded me I already added a view cone on the players of the radar. Then I saw a prototype « How to Successfully Fail » video, and it was about the game « Prototype ».

Relativity is key

« Prototype » radar was soo ripped of from GTA III and more. If we think about it, Need for Speed too. The radars were basically a circle where the beacons out of reach are bound to the circle.

That was quite interesting. Considering making HUDs are particularly hard because of managing all the X and Y positions. So I started making a new radar from scratch using that concept.

I had an idea to solve all the problems, and that perfectly fit the Radar. Instead of doing a DrawSprite to draw my beacons, I would have to use a intermediary function which receives different kind of information instead of xCenter and yCenter. It would simply involve converting all world positions into polar coordinates, where a point is not referred ax X and Y, but using Angle and DistanceFromCenter.

And also, that helped a lot. Because using polar coordinates, we can multiply the values with any radius to dynamically change the radar on-screen size, and by adding a X and a Y, we could place the center of the radar anywhere on the screen.

That solves a lot of problems if we use relative numbers instead of absolute pixels.

The Distance being 0 <= D <= 1, it was even easier to do some special things. Like when a beacon approaches the circle that contains them, if we use a nice power formula to resize the sprite scale, we could avoid having big beacons laying on the circle.

Ideas comes from everywhere

I worked with Kilburn to complete Garry Ware. He offered help to complete Garry Ware and make it become more modular. I think half of the gamemode is his code. And he did things that I didn’t know how to do, but one of the things is quite nice for me and I looked at his code to understand how it worked.

That was actually the WARE: module where minigames are automatically loaded from a folder. It is very nice, considering I could use that thing for my HUD to add beacons on the fly.

You know, the GTA-type radars often comes with a minimap displayed in the background of the radar. I thought it was impossible to do that at all. So instead, I made something that resembles more of the MGS « Soliton Radar » where walls are plain lines. That was quite worked out easily.

But someone suggested me to do a GTA III Minimap in the back of the radar. I already said I thought it was unimaginable, but after thinking for a while, I looked at the Wire Digital Screen code, and thought : « Ok, let’s waste some time doing something what will draw horrible pixels in a low resolution, wasting frames, lagging because of many trace data. ».

Necessary optimization

That was actually pretty ugly. But after increasing and increasing the resolution of it, it became pretty good, and it was worth trying harder to make it work. The important part of the project was optimizing the code, because you can’t afford regenerating a RT texture every frame, for every time you move 0.01 inches or every time you change angle.

Another optimization was because of the trick involved to find out if a cell was plain or not. I used to do traces to find out if a spot was empty or wall. I couldn’t use Vector():IsInWorld(), because it was server-side. But with some research, I jumped on the util.PointContents(Vector()), which was shared, and practically did the same thing. Add a bunch of bit-filtering, and it’s done.

That lead to optimizations like « Divide the map into many calculable cells, and don’t update the radar data if the player haven’t changed position from a cell to another ». Other optimization was like, instead of generating a new RT texture if you change angle, rather re-calculate the polygon that contains the material to rotate it.

The ultimate optimization was also the one that made the HUD look smoother than ever, and so become the best radar if I can pretend. The trick was to offset the U and V values of the polygon so that the radar texture moves with you without re-generating the texture.

It’s out !

You can get your free copy of DepthHUD Radar.

It’s not useable in Team-based gamemodes because of ScriptEnforcer. Only use it on Community gamemodes like Sandbox.

Tags: ,

No Comments

The GMod Tower Trivia issue : Without ScriptEnforcer, without Lua files.

Hi !

Please read all the post. While the first part is pretty ironic, the second part is quite serious.

ScriptEnforcing Trivia, come in my house !

This picture I’ve taken is to demonstrate the pure irony of having a Lua ScriptEnforcer on a nanogame where :

  • The questions never change.
  • The questions are always formulated the same way.
  • The answers given for us to choose are always the same.
  • You have to play for 15 minutes or more.
  • You only win if you’re the top one.
  • You only win 15 GMC.
  • You could play Ball Race and fail all rounds, and win 30 GMC in less time.
  • You can cheat, ScriptEnforcer-Proof, unless a GMod Tower Team member jumps for a trip to France, come knock at my apartment and check if I don’t have sheets of paper stuck on my screen (or a text file).
No CheatSheetEnforcer is yet available

No CheatSheetEnforcer is yet available

Thinking without ScriptEnforcer.

I made a Fretta gamemode, called Garry Ware, because I was upset of Sniper Wars when ScriptEnforcer was always off. I made a gamemode that fit my feelings about that : A frenetic gamemode where it was very hard to cheat at the point where cheating was so pointless because it is actually easier to win without a cheat.

The answer to that was to do IQ-based minigames where the rules always change, or platform games where you need to move in a very special, hardly scriptable way, or perform an action under tight conditions. For the time being, I haven’t heard about any TF2 Soldier Rocketjumpbot that can do Airshots. Maybe someone will make one … not ?

I’m on TV ! … not.

I think Trivia is misdesigned. It is certainly not adapted to the fact that we’re using a platform called « the Internet » as a base, and that implies we can’t check if someone has a cheatsheet on his hands, contrary to TV Shows where the people are confined to restricted and unbreachable rules. Guess why all Internet games where you can actually earn real money (and where winning real money is the main purpose) are actually games based on luck.

Yes, we could actually use our head to answer questions, but we are on the Internet, people use whatever solution to solve a problem … looks like solving this was also some « whatever » solution.

I’m NOT saying cheatsheets are the problem. I’m only saying that that type of Trivia questions are not the right types of questions you can expect because the answers are far more than predictable due to the nature of the questions, easily identified by a script ; and maybe also due to the input of the answers, which is clicking on one and only one answer. If we were to push into the several answers solution, it may include complementarity answers, or answers chosen in a certain order. That could also mean having a long list of saved answers in the server, where we only show a part of it, and we have to select the correct ones in the proposed answers.

That’s an idea amongst many. Dynamic questions and answers.

Scripting on GMod Tower, a Lua playground …

GMod Tower was a Lua paradise for me, I could test my ‘DepthHUD’ addons at high scale, and try to create many features, like the Farseer thanks to the locked doors on the Dev HQ, the Suite Beacons was created as a miscellaneous demonstration for DepthHUD Radar, the Community Player Colors was imagined thanks to a suggestion of Sniper.

It was such a place of inspiration.

I’m sad I can’t stay on GMod Tower anymore to test Lua scripts and improve my HUD. But well.

What’s the point of clientside addons anyway if we block them on Community Gamemodes …

The Trivia problem still applies. There is a problem in the design of it, and I explained it.
I think ScriptEnforcer blocking the worst -in terms of money earning- nanogame of GMod Tower is quite inappropriate and is an easy and unthought approach to solve the problem, which isn’t a problem about moving the cursor towards a head, but is about identifying an incoming string and compare it on a list, which can be done perfectly with no possible errors without a computer-assisted mechanism (see the first picture above).

I’ll let you think about how « too serious » I am about such a minor thingie. But I’m only talking about design, not technically about usermessages or other, but the general thing.
Because GMod Tower Lobby is a « Community Gamemode » just like Sandbox. Players don’t compete. They share something. Trivia is like 1/40 of GMod Tower Lobby. Players should be able to use Scripts on a Community Gamemode, at least that’s my personal opinion.

Tags: ,

No Comments

TF2 Scout bonked as he jumps over train car

The Scout was actually me. Watch others Ratty’s videos displaying nom-nom-nom footage.

Tags: , ,

No Comments

gm_flatgrass_storm

Episode 2 Portal effect ripped off, and turned into an endless area of Flatgrass with a swimming pool in the middle for water contraptions. If you go up high in the sky, you won’t see the square of the map limits.

gm_flatgrass_storm0005

download_source

Tags: , ,

No Comments

gm_lumberyard

I took the SDK files provided by Valve, and turned it into a Garry’s Mod map. Central point removed, replaced by a small flatgrass area.

gm_lumberyard0000

gm_lumberyard0001

download_source(unavailable)

Tags: , ,

No Comments

Bow Sound : Pulling signal

Stretched the Pulling sound, plus a signal at exactly one second, meaning that the arrow is fully charged.

download_source

Tags: ,

No Comments

Revolver Sound (Sounds powerful -> Makes you want to fire it)

I made this sound for a psychological reason : The old Revolver Sound sounded so weak that I thought it was useless in combat.

download_source

Tags: ,

No Comments

Knife Sound : « Meet the Spy »

*Clack clack*

download_source

Tags: ,

No Comments

Ambassador Sound : « Desert Eagle »

Because the Ambassador is a Desert Eagle, in some way.

download_source

Tags: ,

No Comments

Shotgun Sound : « Meet the Spy »

The Shotgun Sound ripped of from the « Meet the Spy » soldier.

download_source

Tags: ,

No Comments

Airblast Sound

Airblast sound, which is a mix of a windspell sound with the original TF2 sound.

download_source

Tags: ,

No Comments