1. Post #1681
    HyperVyper's Avatar
    November 2011
    501 Posts
    Am I going to Hell for enjoying programming in Visual Basic in my class today?

    Seriously beats making Word and Excel documents.

    Code:
        Sub Main()
            Dim weight, waist, neck, hat, shoe As Integer
    
            Console.Write("Input Weight in pounds: ")
            weight = Console.ReadLine()
            Console.Write("Input Waistsize in inches: ")
            waist = Console.ReadLine()
            Console.WriteLine()
    
            neck = 3 * (weight / waist)
            hat = (3 * weight) / (2.125 * waist)
            shoe = 50 * (waist / weight)
    
            Console.WriteLine("Neck Size: " & neck)
            Console.WriteLine("Hat Size: " & hat)
            Console.WriteLine("Shoe Size: " & shoe)
    
            Console.WriteLine("Press any key to continue")
            Console.ReadKey()
    
        End Sub
    Everybody else spent like 10 extra minutes working on that exercise and asking the teacher for help. I feel like an outcast.
    Reply With Quote Edit / Delete Windows 7 United States Show Events Funny Funny x 3Winner Winner x 1Friendly Friendly x 1 (list)

  2. Post #1682
    Turbo Dyke
    .Lain's Avatar
    June 2010
    20,443 Posts
    Am I going to Hell for enjoying programming in Visual Basic in my class today?

    Seriously beats making Word and Excel documents.

    Code:
        Sub Main()
            Dim weight, waist, neck, hat, shoe As Integer
    
            Console.Write("Input Weight in pounds: ")
            weight = Console.ReadLine()
            Console.Write("Input Waistsize in inches: ")
            waist = Console.ReadLine()
            Console.WriteLine()
    
            neck = 3 * (weight / waist)
            hat = (3 * weight) / (2.125 * waist)
            shoe = 50 * (waist / weight)
    
            Console.WriteLine("Neck Size: " & neck)
            Console.WriteLine("Hat Size: " & hat)
            Console.WriteLine("Shoe Size: " & shoe)
    
            Console.WriteLine("Press any key to continue")
            Console.ReadKey()
    
        End Sub
    Everybody else spent like 10 extra minutes working on that excercise...
    Better than nothing
    Reply With Quote Edit / Delete Windows 8 United Kingdom Show Events Agree Agree x 14 (list)

  3. Post #1683

    February 2007
    112 Posts
    Phong is the reflection model, what you're referring to is phong interpolation. I don't understand why you are having to set this up manually, doesn't opengl have automatically interpolated normals in pixel shaders like dx?
    Only if you give it the right information in the right order. If he's drawing that sphere as individual triangles but passing the same normal for every vertex in a triangle he won't see normal interpolation at all. For some reason I'm having a hard time reading his normal calculation code (what's the "norm" variable even for?) or else I'd try to point out a problem there.
    Reply With Quote Edit / Delete Windows 7 United States Show Events

  4. Post #1684
    SHADERS
    Legend286's Avatar
    October 2008
    9,994 Posts
    Only if you give it the right information in the right order. If he's drawing that sphere as individual triangles but passing the same normal for every vertex in a triangle he won't see normal interpolation at all. For some reason I'm having a hard time reading his normal calculation code (what's the "norm" variable even for?) or else I'd try to point out a problem there.
    Well that makes sense. I'm only really good with shaders anyway. I just thought he was trying to achieve the reflections, not actually interpolate stuff.
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events

  5. Post #1685
    Burger's Avatar
    December 2010
    15 Posts
    I'm working on a terrain generator in Java.
    Reply With Quote Edit / Delete Windows 7 Denmark Show Events Winner Winner x 2Informative Informative x 1Artistic Artistic x 1 (list)

  6. Post #1686
    Richy19's Avatar
    May 2010
    5,368 Posts
    Only if you give it the right information in the right order. If he's drawing that sphere as individual triangles but passing the same normal for every vertex in a triangle he won't see normal interpolation at all. For some reason I'm having a hard time reading his normal calculation code (what's the "norm" variable even for?) or else I'd try to point out a problem there.
    Il add some comments.

    I add a triangle to the polygon and compute the triangles normal.
    void Drawable::addTriangle(const Triangle &tri)
    {
        int amount = vertex_data.size();
        glm::vec3 const & a = tri.v1;
        glm::vec3 const & b = tri.v2;
        glm::vec3 const & c = tri.v3;
    
    
        /*
            Calculate the normal of the triangle using this formula:
            triangle ( v1, v2, v3 )
            edge1 = v2-v1
            edge2 = v3-v1
            triangle.normal = cross(edge1, edge2).normalize()
        */
    
        const glm::vec3 n1 = glm::normalize(glm::cross(b - a, c - a));
    
    
    
    
        vertex_data.push_back(tri.v1);
        vertex_data.push_back(tri.v2);
        vertex_data.push_back(tri.v3);
    
        uv_data.push_back(tri.u1);
        uv_data.push_back(tri.u2);
        uv_data.push_back(tri.u3);
    
        norm_data.push_back(n1);
        norm_data.push_back(n1);
        norm_data.push_back(n1);
    
        index_data.push_back(amount);
        index_data.push_back(amount + 1);
        index_data.push_back(amount + 2);
    }
    

    Once all triangles have been added I call phongNormals()

    void Drawable::phongNormals()
    {
        int amount = vertex_data.size();
    
        //Get a list of all individual vertecies
        std::vector<glm::vec3> vecsToCheck;
        for(int i = 0; i < amount; i++)
        {
            bool foundIt = false;
    
            for(int j = 0; j < vecsToCheck.size(); j++)
            {
                if(vecsToCheck[j] == vertex_data[i]) foundIt = true;
            }
    
            if(!foundIt) vecsToCheck.push_back(vertex_data[i]);
        }
    
    
    
    
        for(int i = 0; i < vecsToCheck.size(); i++)
        {
            
            const glm::vec3 ver = vecsToCheck[i];
            std::vector<glm::vec3> norms;
            std::vector<unsigned int> indexs;
        
            ///compare the current verticie to check with all verticies in the polygon
            ///if its equal I store that verticies normal(and thus the normal of the triangle it creates) as well as the position that the original normal is stored in.
            for(int j = 0; j < amount; j++)
            {
                if(ver == vertex_data[j])
                {
                    norms.push_back(norm_data[j]);
                    indexs.push_back(j);
                }
            }
    
            
            ///
            ///Using this formula:
            ///vertex v1, v2, v3, ....
            ///triangle tr1, tr2, tr3 // all share vertex v1
            ///v1.normal = normalize( tr1.normal + tr2.normal + tr3.normal )
            ///
            
            glm::vec3 norm = glm::vec3(0.0f);
            for (unsigned int j = 0; j < norms.size(); j++)
            {
                ///add the normal of all the triangles that share the given verticie
                norm += norms[j];
            }
            ///normalize it
            norm = glm::normalize(norm);
    
            ///and replace the old normal with the new one
            for (unsigned int j = 0; j < indexs.size(); j++)
            {
                norm_data[indexs[j]] = norms[j];
            }
    
        }
    
    }

    In the vertex shader i multiply the normal by the model matrix to account for rotation or scaling(not translation)
    #version 120
    uniform mat4 MVP;
    uniform mat4 Model;
    attribute vec4 Position;
    attribute vec2 UV;
    attribute vec3 Normals;
    varying vec2 uv;
    varying vec3 normals;
    
    void main(){
        normals = normalize((Model * vec4(Normals.x, Normals.y, Normals.z, 0.0f)).xyz);
        uv = UV;
        gl_Position =  MVP * Position;
    }

    and then apply it in the frag
    #version 120
    varying vec2 uv;
    uniform sampler2D myTexture;
    uniform bool DrawLines;
    varying vec3 normals;
    uniform vec4 AmbientLight;
    uniform vec4 DiffuseLight;
    
    void main(){
        vec4 color;
    
        if(DrawLines)
        {
            color = vec4(1,1,1,1);
        }
        else
        {
            color = texture2D( myTexture, uv ).rgba;
    
            vec3 ambLight = AmbientLight.xyz * AmbientLight.w;
    
            float DiffuseFactor = dot(normals, DiffuseLight.xyz);
    
            vec3 diffLight = vec3(0, 0, 0);
            if (DiffuseFactor > 0) {
                diffLight = DiffuseLight.xyz * DiffuseLight.w * DiffuseFactor;
            }
    
            color.xyz = color.xyz * (ambLight + diffLight);
        }
    
        gl_FragColor = color;
    
    }
    
    Reply With Quote Edit / Delete Linux United Kingdom Show Events

  7. Post #1687
    I gave enough money to buy a soda.
    Funley's Avatar
    May 2010
    1,389 Posts
    -snip'd-
    Reply With Quote Edit / Delete Windows 7 Finland Show Events Dumb Dumb x 3 (list)

  8. Post #1688
    Gold Member
    Parakon's Avatar
    November 2008
    8,520 Posts


    this might be too graphic
    Reply With Quote Edit / Delete Windows 7 Canada Show Events Funny Funny x 60Agree Agree x 2Winner Winner x 2Artistic Artistic x 1 (list)

  9. Post #1689
    D33Jay's Avatar
    January 2012
    63 Posts

    Ludum Dare.
    Reply With Quote Edit / Delete Windows 7 United States Show Events Disagree Disagree x 4Informative Informative x 2Agree Agree x 1 (list)

  10. Post #1690
    Hates php
    high's Avatar
    May 2006
    2,413 Posts
    Anyone know if there is already an app that takes a pass phrase and translates it into a secure password that you can use with a website? If not I was thinking something like this.

    Input: Super secure easy to remember passphrase. But goes over the password size limit and doesn't meet the symbol/number requirement.
    Output: GP04vg!?9NSEZF$

    I think it would be a nice little app to use with a password manager. That way if you don't have your password file on you, you can still get the password using the pass phrase it derived from. Also it allows you to create a password that is easy to remember and secure without needing the 1 symbol, 1 number most sites require.
    Reply With Quote Edit / Delete Windows 7 United States Show Events

  11. Post #1691
    Gold Member
    Naelstrom's Avatar
    June 2010
    2,646 Posts
    Anyone know if there is already an app that takes a pass phrase and translates it into a secure password that you can use with a website?
    Yes but it costs money: 1password
    Reply With Quote Edit / Delete Linux United States Show Events Disagree Disagree x 1 (list)

  12. Post #1692
    Hates php
    high's Avatar
    May 2006
    2,413 Posts
    Yes but it costs money: 1password
    Does it have that feature? Seems more like just a password manager. Anyways if its costs money then I am going to do something simple/free in javascript(for accessibility).
    Reply With Quote Edit / Delete Windows 7 United States Show Events

  13. Post #1693
    Gold Member
    Naelstrom's Avatar
    June 2010
    2,646 Posts
    Does it have that feature? Seems more like just a password manager.
    Yeah my father bought it; it just runs as a web-browser plugin and whenever you enter a password into a website it translates the password to a very strong one.
    This way you can type one password for everything, but actually have many strong passwords.
    Reply With Quote Edit / Delete Linux United States Show Events Informative Informative x 1Winner Winner x 1 (list)

  14. Post #1694

    February 2007
    112 Posts
    Il add some comments.
    ...

    ///
    ///Using this formula:
    ///vertex v1, v2, v3, ....
    ///triangle tr1, tr2, tr3 // all share vertex v1
    ///v1.normal = normalize( tr1.normal + tr2.normal + tr3.normal )
    ///

    glm::vec3 norm = glm::vec3(0.0f);
    for (unsigned int j = 0; j < norms.size(); j++)
    {
    ///add the normal of all the triangles that share the given verticie
    norm += norms[j];
    }
    ///normalize it
    norm = glm::normalize(norm);


    ///and replace the old normal with the new one
    for (unsigned int j = 0; j < indexs.size(); j++)
    {
    norm_data[indexs[j]] = norms[j];
    }

    }

    ...
    But unless I'm just blind, you never DO anything with the new normal after you normalize it...right? How are you supposed to adjust for shared vertices like that if you never save the information. That variable just runs out of scope and it's all gone. Barring my potential inability to read code right now, I'd say that's your problem.
    Reply With Quote Edit / Delete Windows 7 United States Show Events Informative Informative x 1 (list)

  15. Post #1695
    Richy19's Avatar
    May 2010
    5,368 Posts
    But unless I'm just blind, you never DO anything with the new normal after you normalize it...right? How are you supposed to adjust for shared vertices like that if you never save the information. That variable just runs out of scope and it's all gone. Barring my potential inability to read code right now, I'd say that's your problem.
    Well thats slightly embarrassing.

    That last for loop should be:
    ///normalize it
            norm = glm::normalize(norm);
    
            ///and replace the old normal with the new one
            for (unsigned int j = 0; j < indexs.size(); j++)
            {
                norm_data[indexs[j]] = norm;
            }

    which gives the correct result... Oh the dangers of programming at 4 am.



    Thanks for spotting it :D
    Reply With Quote Edit / Delete Linux United Kingdom Show Events Winner Winner x 7Friendly Friendly x 1 (list)

  16. Post #1696
    SHADERS
    Legend286's Avatar
    October 2008
    9,994 Posts
    But unless I'm just blind, you never DO anything with the new normal after you normalize it...right? How are you supposed to adjust for shared vertices like that if you never save the information. That variable just runs out of scope and it's all gone. Barring my potential inability to read code right now, I'd say that's your problem.
    I just noticed he uses the word "verticie." Vertex and vertices Richy...

    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events

  17. Post #1697
    xThaWolfx's Avatar
    October 2009
    281 Posts
    I've started using shaders.. Let's just say I don't understand them as well as I'd hoped I would:

    This used to be a dice...

    Edited:
    It's something :/


    Next step is figuring out how to do lighting.
    Edited:


    After searching around I've used this as my shaders.
    Is this correct? My lighting seems way off, could that be due to normals being off?
    Reply With Quote Edit / Delete Windows 7 Netherlands Show Events Funny Funny x 8Artistic Artistic x 1 (list)

  18. Post #1698

    April 2011
    211 Posts
    LuaOS seems pretty cool.
    Reply With Quote Edit / Delete Windows 7 Sweden Show Events Agree Agree x 5Disagree Disagree x 2Programming King Programming King x 1 (list)

  19. Post #1699
    Programming King and Most Patient Member 2013
    r0b0tsquid's Avatar
    December 2008
    1,155 Posts
    Spent an interesting afternoon putting up scaffolding :)
    I'm back home now, had a bit of a gotcha moment when I realised that textures "belong" to the context that they are bound in, which was the source of a couple of problems for me. For the moment I'm uploading two copies of each texture (which isn't much of a burden), but I'd like to fix that at some point.
    Anyway, texture selection/sampling:

    Just need to get the file dialog working, and then I could perhaps add mesh importing so you can actually do something useful with the vertex shader. I was thinking of using ROBO_DONUT's BSM lib.
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events Winner Winner x 1Artistic Artistic x 1 (list)

  20. Post #1700
    xThaWolfx's Avatar
    October 2009
    281 Posts
    Ok, so I've switched the model to see what'd happen:

    I thought, that looks ok!
    But then I went INSIDE the ball:


    I think my normals weren't what they were supposed to be




    Edited:
    Yep, that solved my problem.
    Reply With Quote Edit / Delete Windows 7 Netherlands Show Events Winner Winner x 7 (list)

  21. Post #1701
    Eudoxia's Avatar
    July 2009
    6,009 Posts
    Code:
    >(declare i32 printf i8* ...)
    ; ModuleID = 'JIT'
    
    declare i32 @printf(i8*, ...)
    
    >(declare i32 atoi i8)
    ; ModuleID = 'JIT'
    
    declare i32 @printf(i8*, ...)
    
    declare i32 @atoi(i8)
    
    >
    Foreign Function Interface declarations.

    I love LLVM.
    Reply With Quote Edit / Delete Linux Uruguay Show Events Agree Agree x 1 (list)

  22. Post #1702
    xThaWolfx's Avatar
    October 2009
    281 Posts
    Improving my OBJ-loader.
    Houses are always on their side, right?


    Reply With Quote Edit / Delete Windows 7 Netherlands Show Events Funny Funny x 15Agree Agree x 1 (list)

  23. Post #1703
    Richy19's Avatar
    May 2010
    5,368 Posts
    Improving my OBJ-loader.
    Houses are always on their side, right?


    How are you handelling obj files with/without some of the attributes?
    Such as obj files with only vertecies or ones with normals/vertecies/uv's?
    Reply With Quote Edit / Delete Linux United Kingdom Show Events

  24. Post #1704
    I might have messed something up...

    Reply With Quote Edit / Delete Windows 7 Netherlands Show Events Agree Agree x 1 (list)

  25. Post #1705
    xThaWolfx's Avatar
    October 2009
    281 Posts
    How are you handelling obj files with/without some of the attributes?
    Such as obj files with only vertecies or ones with normals/vertecies/uv's?
    I'm not. When the file has more than one attribute I just take the vertex and ignore the rest.
    It's a terrible method but I can't be arsed to implement all the other stuff right now, I've only just started with all this complicated OpenGL stuff
    Reply With Quote Edit / Delete Windows 7 Netherlands Show Events

  26. Post #1706
    Naarkie's Avatar
    September 2011
    319 Posts


    this might be too graphic
    Dobby?!
    Reply With Quote Edit / Delete Windows 7 South Africa Show Events Agree Agree x 2Dumb Dumb x 1 (list)

  27. Post #1707
    NovembrDobby's Avatar
    April 2007
    1,138 Posts
    Dobby?!
    Yeah?

    on topic - wrapping up my fyp:

    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events Funny Funny x 5Artistic Artistic x 1 (list)

  28. Post #1708
    voodooattack's Avatar
    October 2009
    1,933 Posts
    Heh, just managed to get a gstreamer plugin I'm writing in Vala up and running. Was kind of tough getting it to build correctly since Vala doesn't support DLL targets. I had to compile the C output it spews then link it manually.

    It took me a while to figure that out, surprisingly easy once you get to know how it all works though.

    Now to the next part, getting my sink to live-stream media over HTTP, not sure how that's going to work as of yet..
    Reply With Quote Edit / Delete Windows 7 Egypt Show Events

  29. Post #1709
    Naarkie's Avatar
    September 2011
    319 Posts
    Also:

    Making a minimalistic roguelike for Ludum Dare.
    The window is small and the game is minimalistic because the theme is Tiny World. Also because I cannot art.
    Reply With Quote Edit / Delete Windows 7 South Africa Show Events Funny Funny x 8Informative Informative x 1Friendly Friendly x 1 (list)

  30. Post #1710
    Dienes's Avatar
    November 2010
    304 Posts
    Now, every object can be masked/destroyed and still has a fully dynamic pixel-perfect collision model.


    You may think the physics suck, that's because they do. I suck at implementing physics calculations.
    Reply With Quote Edit / Delete Windows 7 Germany Show Events Winner Winner x 13Programming King Programming King x 6Artistic Artistic x 3 (list)

  31. Post #1711
    www.bff-hab.de
    Dennab
    February 2009
    7,832 Posts
    Reminds me of Cortex Command, needs more explosions
    Reply With Quote Edit / Delete Windows 7 Germany Show Events Agree Agree x 5 (list)

  32. Post #1712
    I gave enough money to buy a soda.
    Funley's Avatar
    May 2010
    1,389 Posts
    Now, every object can be masked/destroyed and still has a fully dynamic pixel-perfect collision model.


    You may think the physics suck, that's because they do. I suck at implementing physics calculations.
    Why do the particles slow down when they are about to hit the ground?
    Reply With Quote Edit / Delete Windows 7 Finland Show Events

  33. Post #1713
    Dienes's Avatar
    November 2010
    304 Posts
    Why do the particles slow down when they are about to hit the ground?
    You may think the physics suck, that's because they do. I suck at implementing physics calculations.

    Well, to make them stack up and collide properly without falling into each other, I stop them in mid air, when the next update cycle would have them colliding with a blocking pixel. after that, only gravity remains, pulling them down. Instead, I would have to move them backwards until they do not collide anymore, but that's a to-do.
    Reply With Quote Edit / Delete Windows 7 Germany Show Events

  34. Post #1714
    Programming King and Most Patient Member 2013
    r0b0tsquid's Avatar
    December 2008
    1,155 Posts
    Well that was more of a pain than it should have been. wxWidgets pretty much insists on using unicode strings for everything, and the first couple of characters of the file paths were getting mangled when I converted them to regular strings for file loading. All fixed now though, I can load the exported heightmap TGAs from the terrain thing.

    Edited:

    I was thinking that I need some way of saving/loading shader files. I thought the most clutter-free way of doing it would be to just right-click on the text box and click "Save"/"Load"? Plus the regular Ctrl+S and Ctrl+O.

    Edited:

    Loaded up my old terrain raymarcher shader, along with the textures. It works! :D
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events Artistic Artistic x 7Programming King Programming King x 1 (list)

  35. Post #1715
    open.gl
    Overv's Avatar
    February 2007
    7,431 Posts
    I'm doing something very evil right now: generating machine code at runtime and executing it. Together with the Intel manual and x86asm.net, I'm now working on a little class that allows you to generate programs at runtime from C++.

    An example:

    #include <cstdio>
    #include "Assembler.hpp"
    
    int main()
    {
    	Assembler as;
    		as.IMov32( REG_EAX, 2 );
    		as.IMov32( REG_ECX, 4 );
    		as.IAdd32( REG_EAX, REG_ECX );
    	int eax = as.Run();
    
    	printf( "EAX contains %d\n", eax );
    
    	return 0;
    }



    Remember that this is not a virtual machine, this is actual code being run on the processor. The assembler class outputs machine code to a buffer that is copied into memory and called as a function:

    ...
    
    void Assembler::IMov32( Register dst, int value )
    {
    	code.push_back( 0xC7 );
    	code.push_back( 0xC0 | dst );
    	PushInt32( value );
    }
    
    void Assembler::IMov32( Register dst, Register src )
    {
    	code.push_back( 0x8B );
    	code.push_back( 0xC0 | ( dst << 3 ) | src );
    }
    
    ...

    You can see how it works here. I'm not planning to go very far with this, but I'd like to create a Brainfuck compiler with it.
    Reply With Quote Edit / Delete Windows 7 Netherlands Show Events Programming King Programming King x 6Useful Useful x 3Artistic Artistic x 1 (list)

  36. Post #1716
    Gold Member
    Meller Yeller's Avatar
    June 2010
    10,300 Posts
    Been really into stealthy type games lately and decided to work with that as a new project.

    I've started a top down shooter style stealth game but the gimmick is that the levels/missions will be randomly generated for infinite replay value and fun times.

    How do you guys make gifs of your work? Screenshots just won't get the message across.
    Reply With Quote Edit / Delete Windows 7 United States Show Events

  37. Post #1717
    Gold Member
    ryandaniels's Avatar
    December 2006
    3,940 Posts
    I had imagined I could do this, but it almost seemed to good to be true:

    1000 samples, 3 minutes 38 seconds




    Same scene, same samples, 3 minutes and 39 seconds




    Originally, I had been sampling from a ray sent down the center of a given pixel. Then I changed this to randomly select rays within the pixel's area. Voila, free anti-aliasing. (I actually think this is the right way to do it in the first place)
    Reply With Quote Edit / Delete Windows 7 United States Show Events Winner Winner x 7Artistic Artistic x 4 (list)

  38. Post #1718
    Gold Member
    darkrei9n's Avatar
    November 2007
    5,138 Posts
    Don't have any pictures but currently I'm working on a sort of demo for when I apply to any software companies. Only goals so far are to generate a planet based on a seed and be able to keep detail up at ground level.
    Reply With Quote Edit / Delete Windows 7 United States Show Events Winner Winner x 3Programming King Programming King x 1 (list)

  39. Post #1719
    Richy19's Avatar
    May 2010
    5,368 Posts
    Don't have any pictures but currently I'm working on a sort of demo for when I apply to any software companies. Only goals so far are to generate a planet based on a seed and be able to keep detail up at ground level.
    Nice, thats what im learning OGL to try to accomplish.
    I was thinking of something like a procedural planet generation for my fyp, tho i still have another year for that.

    something like these:
    http://www.youtube.com/watch?v=0bQz5ugtfLY
    http://www.youtube.com/watch?v=OiGAD...eature=related

    Do you have a blog or where you are documenting it? It would be really usefull if I could follow its progress.
    Reply With Quote Edit / Delete Linux United Kingdom Show Events

  40. Post #1720
    SBlue's Avatar
    April 2011
    72 Posts
    Threw myself into x86 assembly today and managed to bump the maxplayers limit in Portal 2 to 32, but I can't get signature scanning to work so I can't do it at runtime yet :/
    I'll get round to patching the 'mp_coop in map name = 2 players' check as well, but for now I'll just abuse the fact that it runs 'listenserver.cfg' if available, and set maxplayers there.

    No pretty pictures until I get some test subjects together though
    Reply With Quote Edit / Delete Windows 7 United Kingdom Show Events Winner Winner x 3 (list)