[QUOTE=garry;39400581]I'm not saying that.
I'm saying that if I'm making a game then getting the game finished and out there being played is a million times more important than making sure it's cheat/exploit proof before release.
Because you might release it and then no-one wants to play it. Then the months you've spent working on the anti-cheat system is totally wasted - because it's not needed - at all.[/QUOTE]
Garry's secret project has been confirmed.
[QUOTE=Mega1mpact;39400600]Garry's secret project has been confirmed.[/QUOTE]
[url=http://facepunch.com/forumdisplay.php?f=415]wat?[/url]
[QUOTE=Lexic;39400625][url=http://facepunch.com/forumdisplay.php?f=415]wat?[/url][/QUOTE]
Oh yea I forgot about that one :/
[QUOTE=Fridolin;39398826]I work on a source management tool.[/QUOTE]
Interesting, what problems are you trying to solve that existing tools don't?
[QUOTE=mechanarchy;39400501]Normally, yes, but the standard makes an exception for main[/QUOTE]
Oh.
Well it's still bad form to do that kind of a thing implicitly, as far as I'm concerned.
The start of a map editor :D
[t]http://i.imgur.com/vD8v0AN.png[/t]
I also came up with the most creative name for an RPG.
Today I automated GMod builds, so our LAN's steam content server is always up to date with the latest SVN contents.
I got the workshop command line publisher worked out. Should work on oxs and linux too.
Updated GMod's steam cloud storage to 1gb (from 100mb).
Decals. Which means bullet holes and sprays!
[IMG]https://dl.dropbox.com/u/99765/fortblox/fortblox_290113_165007.png[/IMG]
There's something I find funny about spending so much time on a feature that people will probably only use to spray animated dicks everywhere.
[QUOTE=garry;39400581]I'm not saying that.
I'm saying that if I'm making a game then getting the game finished and out there being played is a million times more important than making sure it's cheat/exploit proof before release.
Because you might release it and then no-one wants to play it. Then the months you've spent working on the anti-cheat system is totally wasted - because it's not needed - at all.[/QUOTE]
Alright, I can understand that.
[QUOTE=laylay;39401986]Decals. Which means bullet holes and sprays!
[IMG]https://dl.dropbox.com/u/99765/fortblox/fortblox_290113_165007.png[/IMG]
There's something I find funny about spending so much time on a feature that people will probably only use to spray animated dicks everywhere.[/QUOTE]
A decal system is one of the few things I've never coded. Can you talk me through how yours works?
I am assuming that you trace a decal as a bbox across the world, then any entities it touches, you loop each triangle in its mesh and then create a dynamic mesh out of the triangles that it touches?
Or maybe you could do it in a shader?
[QUOTE=garry;39402252]A decal system is one of the few things I've never coded. Can you talk me through how yours works?
I am assuming that you trace a decal as a bbox across the world, then any entities it touches, you loop each triangle in its mesh and then create a dynamic mesh out of the triangles that it touches?
Or maybe you could do it in a shader?[/QUOTE]
Mine is incredibly simple because of how simple the geometry is. I can explain how mine works but it's not really going to apply to other games.
First I do a trace, getting the block and face direction I want the decal to be on, because decals can span multiple faces, I have to split the decal up into pieces. I get the min and max block the decal covers and put the decal on each one. When I write the decals to the buffer, I clip the vertices and adjust their texture coords.
All decals using the same texture are batched up into one big mesh. I allocate a buffer big enough for say 1000 decals or whatever, then I can just quickly subbuffer into that when I want to add or remove a decal and draw a range of that buffer for how many decals there actually are. (this is obvious though)
They're drawn with 2X Multiplicative blending (which is a really awesome blending mode, I don't even have to light the decals or anything, it just works)
Like I said though, this only works because of how simple my geometry is. Projecting decals onto complicated geometry is much different.
This is an interesting read on the subject though
[URL]http://blog.wolfire.com/2009/06/how-to-project-decals/[/URL]
And there's also deferred decal rendering, which I don't know much about.
[QUOTE=garry;39402252]A decal system is one of the few things I've never coded. Can you talk me through how yours works?
I am assuming that you trace a decal as a bbox across the world, then any entities it touches, you loop each triangle in its mesh and then create a dynamic mesh out of the triangles that it touches?
Or maybe you could do it in a shader?[/QUOTE]
Thats pretty much exactly what source does.
I guess you can do it on shaderlevel, if the mesh you print the decal on is bound to change often.
[csharp]
string tmp = sDataRecd.Substring(0, sDataRecd.Length);
[/csharp]
wat
"Clever" way to copy a string, I'm guessing.
[QUOTE=JohnD;39402638][csharp]
string tmp = sDataRecd.Substring(0, sDataRecd.Length);
[/csharp]
wat[/QUOTE]
Somebody used Substring to copy a string?
Yeah I stumbled on that a few minutes ago when I was looking through some code at work. That's probably what they were meaning to do. Thanks.
[editline]29th January 2013[/editline]
You know, this whole chunk of code feels like it was ported from a non-managed environment. I guess it was just a relic and the person who was porting it wasn't thinking very much.
[QUOTE=garry;39398983]We've done it this way before. It works, but only to a certain degree. Being together all day is much much better. You can talk problems over, you share project energy, ideas.[/QUOTE]
Remote is okay for that. Anyways they would only be working remotely while you evaluate them. The idea is to relocate them locally if after a week or so you think its a good fit.
On an unrelated note. TortoiseMerge now uses a ribbion
[img]http://i.imgur.com/uA1dx2T.png[/img]
I have mixed feelings about ribbons. However in this case I think it works nicely. Mainly because there aren't that many options. A lot nicer than having to go through menus for everything. Especially the comparing whitespace option.
[QUOTE=JohnD;39402692]Yeah I stumbled on that a few minutes ago when I was looking through some code at work. That's probably what they were meaning to do. Thanks.
[editline]29th January 2013[/editline]
You know, this whole chunk of code feels like it was ported from a non-managed environment. I guess it was just a relic and the person who was porting it wasn't thinking very much.[/QUOTE]
Half the time I look at the code at my job I go "what the fuck is this shit".
[QUOTE=JohnD;39402638][csharp]
string tmp = sDataRecd.Substring(0, sDataRecd.Length);
[/csharp]
wat[/QUOTE]
[URL="https://www.destroyallsoftware.com/talks/wat"]https://www.destroyallsoftware.com/talks/wat[/URL]
for those of you who haven't seen :)
[QUOTE=garry;39399759]I can get people to break what I make for free[/QUOTE]
It was worth a try :v:
[IMG]http://i.minus.com/ir7V2gx3cdNpo.png[/IMG]
I think I broke it... a little.
[csharp] // go back and wait for other clients from this port
for (j = 0; j < dcConfig.ListeningPortCount; j++)
// if (((System.Net.IPEndPoint)(ci.Socket.LocalEndPoint)).Port == dcConfig.port(j))
// break;
socketListeners[j].BeginAccept(new AsyncCallback(OnClientConnect), socketListeners[j]); [/csharp]
And that's why you use braces.
[img]http://i.imgur.com/kzWBvQJ.jpg?1[/img]
I am working on my Virtual Sport Betting app, if you like it, make sure to vote here: [url]http://apps.facebook.com/offerpop/Contest.psp?c=275040&u=50788&a=202991206406825&p=5510679098&v=Entry&id=v11252&rest=1[/url]
[QUOTE=VGS_Devs;39403162][URL="https://www.destroyallsoftware.com/talks/wat"]https://www.destroyallsoftware.com/talks/wat[/URL]
for those of you who haven't seen :)[/QUOTE]
Hahah, god, I love that!
Wrote a short program to find numbers who's numerical values are the same as the sum of the ascii values of each of their characters when represented in decimal. I was surprised when the only numbers which satisfied the conditions in the range of 0 to 9999999 (arbitrary) were 150 through 159 inclusively. Does anyone know if these are the only numbers, or else how to prove what numbers do work?
[IMG]http://i.minus.com/i9X0hO7qFcU2J.png[/IMG]
I managed to use a multiplication instead of an addition, totally screwing up my index buffer offsets. This time round I'm storing the whole map in one vertex buffer and one index buffer and just taking parts of the index buffer for each face, these are generated at map load of course.
[QUOTE=JohnD;39403460][csharp] // go back and wait for other clients from this port
for (j = 0; j < dcConfig.ListeningPortCount; j++)
// if (((System.Net.IPEndPoint)(ci.Socket.LocalEndPoint)).Port == dcConfig.port(j))
// break;
socketListeners[j].BeginAccept(new AsyncCallback(OnClientConnect), socketListeners[j]); [/csharp]
And that's why you use braces.[/QUOTE]
Not to start a shitstorm over using extra braces or anything, but the person who edited this should have seen that there was going to be a problem.
[QUOTE=garry;39401855]Today I automated GMod builds, so our LAN's steam content server is always up to date with the latest SVN contents.
I got the workshop command line publisher worked out. Should work on oxs and linux too.
Updated GMod's steam cloud storage to 1gb (from 100mb).[/QUOTE]
This is completely unrelated, but are you aware of a lot of Mac users having font issues with Garry's mod?
[QUOTE=Rayjingstorm;39403936]Wrote a short program to find numbers who's numerical values are the same as the sum of the ascii values of each of their characters when represented in decimal. I was surprised when the only numbers which satisfied the conditions in the range of 0 to 9999999 (arbitrary) were 150 through 159 inclusively. Does anyone know if these are the only numbers, or else how to prove what numbers do work?[/QUOTE]
It seems like you can find an equation for the solutions for a given number of digits; here's three:
Let a, b, c be the three digits. Their corresponding ascii values are a + 48, b + 48, and c + 48.
a + 48 + b + 48 + c + 48 = 100a + 10b + c
a + b + 144 = 100a + 10b
144 = 99a + 9b
16 = 11a + b
b = 16 - 11a
If you let a be 1, you indeed find that b = 5, and since any larger a would make b negative, these must be the only a and b that work for three digits.
It's probably possible to generalize it further, but it'll require a good amount of thought. Really interesting though.
EDIT:
For longer numbers, you end up getting a fractional left side (192/9 for 4 digits). Since the left side is 48*n/9, It only works for numbers whose lengths are divisible by 3.
Actually, that was silly of me, those 3-digit ones are the only numbers, because by the time you get to 6 digits the numerical values are far bigger than any possible sum of their ascii values.
[QUOTE=account;39404081]It seems like you can find an equation for the solutions for a given number of digits; here's three:
Let a, b, c be the three digits. Their corresponding ascii values are a + 48, b + 48, and c + 48.
a + 48 + b + 48 + c + 48 = 100a + 10b + c
a + b + 144 = 100a + 10b
144 = 99a + 9b
16 = 11a + b
b = 16 - 11a
If you let a be 1, you indeed find that b = 5, and since any larger a would make b negative, these must be the only a and b that work for three digits.
It's probably possible to generalize it further, but it'll require a good amount of thought. Really interesting though.
EDIT:
For longer numbers, you end up getting a fractional left side (192/9 for 4 digits). Since the left side is 48*n/9, It only works for numbers whose lengths are divisible by 3.
Actually, that was silly of me, those 3-digit ones are the only numbers, because by the time you get to 6 digits the numerical values are far bigger than any possible sum of their ascii values.[/QUOTE]
Thank you! I can't believe I missed that intuitive bit about the maximum ASCII value for a given length being too small. It makes sense but I didn't give it enough thought.
Sorry, you need to Log In to post a reply to this thread.