Pixel Envision Ltd.
Mobile Game Development Studio
    • Home
    • About Us
    • Our Games
      • Hyper-Casual
      • Casual Games
        • Don’t Get Caught
        • Hordes of Enemies
        • noded
        • kubic
        • Whip Swing
        • Witches’ Brew
      • Kids Apps
        • Cars & Trucks Puzzle
        • Train Puzzles for Kids
        • Animal Puzzle
        • Fairy Tale Puzzles for Kids
        • Coloring Book
        • Find the Differences
    • Blog
    • Support
    • Privacy Policy
    Select Page ...

    Monthly: August, 2011

    CloudFlare vs. Incapsula - Benchmark Review

    August 29, 2011 Tips & Tricks

    As I have noted in my previous blog post, I’ve been testing out few CDN services for use with this website; CloudFlare, Incapsula & Torbit.

    Currently, Torbit is in invite only beta. Josh Fraser was kind enough to provide me an access but since their system is not public yet, Torbit is not included in the benchmarks. But I have included a short review based on my recent experience. I’m planing to update this post with benchmark numbers in the future as soon as they are eligible…

    How I tested

    For the load time benchmarks, I have decided to use WebPageTest.org as it is free, providing actual browser results instead of simulated results and offering enough locations to see global timing. In the advanced settings, I have selected “First View Only” & 5 test runs to make sure content get in to the cache. I have repeated those test for multiple times at the different times of day to make sure server load won’t make a big difference.

    Test Location
    First View only>
    Test runs: 5
    InMotion
    Business Class
    East Coast
    CloudFlare
    Basic (Free) Account
    Medium Security (Default)
    Incapsula
    Free Account
    Trial period (All Features)
    Dulles, VA – IE8 – DSL1.624s1.567s1.792s
    New York, NY – IE8 – DSL1.685s1.596s1.675s
    *Atlanta, GA – IE8 – DSL1.853s1.740sN/A
    Chicago, IL – IE9 – DSL3.130s1.715s2.032s
    Kansas City, MO – IE8 – DSL2.105s1.730s2.158s
    San Jose, CA – IE8 – DSL3.806s1.704s2.510s
    San Francisco, CA – IE9 – DSL2.620s3.090s2.571s
    Los Angeles, CA – IE8 – DSL2.953s1.987s2.150s
    Montreal, Canada – IE8 – DSL2.153s2.003s2.107s
    São Paulo, Brasil – IE8 – DSL3.700s3.292s3.773s
    Dublin, Ireland – IE7 – DSL4.185s2.673s2.604s
    Gloucester, UK – IE7 – DSL4.761s3.306s3.330s
    London, UK – IE8 – DSL3.833s2.265s2.038s
    Paris, FR – IE8 – DSL2.934s1.921s2.209s
    Amsterdam, NL – IE8 – DSL3.826s2.967s3.566s
    Geneva, Switzerland – IE8 – DSL3.350s2.332s3.239s
    Frankfurt, DE – IE8 – DSL4.536s2.225s3.591s
    Stockholm, Sweden – IE8 – DSL3.019s1.903s3.894s
    **Israel – IE8 – DSL4.446s403 Error2.189s
    **Nairobi, Kenya – IE829.327s403 Error35.014s
    Delhi, India – IE7 – DSL8.699s4.494s9.532s
    Bangalore, India – IE8 – DSL10.470s5.442s5.825s
    Hyderabad, India – IE8 – DSL6.978s4.787s4.233s
    Moscow, Russia – IE8 – DSL3.447s2.280s3.531s
    Singapore – IE8 – DSL6.022s4.712s6.192s
    Taipei, Taiwan – IE9 – DSL5.045s2.857s4.009s
    ***Jiangsu, China – IE7 – DSL3.728s2.447s8.083s
    Seoul, Korea – IE 7 – DSL7.080s3.059s7.240s
    Tokyo, Japan – IE9 – DSL4.288s2.464s3.803s
    Sydney, AU – IE7 – DSL8.211s5.011s7.412s
    Wellington, NZ – IE8 – DSL5.527s4.072s5.520s

    Remarks

    * Atlanta was not available when I did the Incapsula tests.
    ** CloudFlare returns 403 Error for those locations when using default (MEDIUM) security settings. Setting it to LOW solves that problem.
    *** YouTube access blocked in China, so our current home page cannot fully load. Because of that I have used “Start Render” times instead of “Page Load”.

    Torbit Review

    http://torbit.com

    Torbit works in a different way than the other two services. First of all, they do not offer any security features but purely focused on optimizing and speed.

    They are offering some unique optimizations such as HTML5 “Local Storage” or “DOM Storage”. Check out the blog post by Josh or read more about Local Storage.

    They have a similar DNS based setup as other two but their CDN system works in the old fashioned way. Once they have your JS, CSS & images loaded in to their cache, URL’s pointing those files will be re-written to use their domains. When the browser connection limits are low (for example, it was 2 for IE7) that is very useful as it allows more simultaneous downloads which means faster page loads. But that is not the case with newer browsers as they already have higher connection limits and using multiple domains may reduce performance (that’s my opinion) because of the extra DNS lookups.

    They also have limited (since not all images and/or browsers are compatible) support for WebP images. If all the conditions are matched, it will kick in and Torbit will serve WebP versions on those images for further speed up.

    Their current benchmark numbers are almost on par with others. And if your site can benefit from the unique optimizations such as using Local Storage you should check them out today!

    Incapsula Review

    http://www.incapsula.com

    If you are primarily looking for security with the added benefit of some extra speed, you should check out Incapsula.

    Their free account offers more protection than CloudFlare’s free account. Also they are offering few extra services such as uptime monitoring.

    But Incapsula is a bit slower when it comes to the speed. I think that’s because of using less data centers (3 according to that post) spread across the world.

    I must also not that I have signed but for their free (Personal) plan but they also have a 30 days trial. So, I had access to all features and tests were done with full acceleration.

    On a side note, their setup is a bit different. Instead of a full DNS change you’ll just need to point your A & CNAME to provided locations.

    CloudFlare Review

    http://www.cloudflare.com

    As you can see from my tests CloudFlare provided the fastest access, period. At this time, they have 12 data centers spread around the globe and that information (along with datacenter status) is publicly accessible.

    They were a bit slow (but just a bit) for the UK and AU/NZ region. But I’ve been told a new DC for UK is coming very soon.

    Their setup is pretty straight forward but as they take over all of your DNS, you should be careful to not to miss any entries. Their system detected pretty much everything but I had to manually setup the TXT record for Domain Keys.

    I should also mention about a problem I had, somehow my IP is locked out and I was receiving “502 Bad Gateway” error following a false “Web Page Not Available” message when I try to access my sites. But at the same time, sites were fully accessible to the rest of the world. That problem lasted for a while but eventually it returned to the normal.

    There are also some reports of false errors over the web (Google “cloudflare 502”) but don’t forget CF is currently in beta.

    Another thing to consider is the pages that is shown to users in case of a failure or blocking. Those pages contain CloudFlare links & logo and there are some who not fond of this. You may beg to differ but for a FREE service that is OK with me. And apparently PRO account will have some control over this very soon.

    For me, CloudFlare’s WordPress plugin is better than the provided by Incapsula. Both resolves actual visitors IP’s so WordPress will show it correctly. But on top of that when you mark a comment as a spam, CloudFlare posts that information back to their system to prevent further access of that offending user.

    Edit: CloudFlare also supports HTML LocalStorage and other some other tricks when their new (beta) Rocket Loader feature is enabled. Thanks to Matthew Prince of CloudFlare for letting me know.

    Verdict

    All three services are very good. All has their strengths and weaknesses so you should pick one based on your website & your own requirements. But for Pixel Envision, my pick is:

    Next Generation (CDN) Content Delivery Networks

    August 27, 2011 Tips & Tricks

    While working to get our site ready for our first product, I’ve been looking for options to speed it up globally without spending a dime, if possible. My first tough was using a regular CDN, but then I realize there is a new & better (in my opinion) way to do it…

    You may ask, why?

    • Website performance & security at the same time. Your content hosted on could network while getting protected from malicious attacks.
    • Simple configuration, they don’t require you to change a thing on your server. Most (if not all) configured by DNS.
    • Better SEO than regular CDN networks, no URL rewrites required to serve page assets. All your images stays on your master domain, not on another CDN domain or subdomain of yours.

    For the last few days I’ve been testing & benchmarking. So, my next blog entry will be a review on those services.

    • CloudFlare
    • Incapsula
    • Torbit

    For the record, there are other similar services but I left them out, because they were either too expensive for my needs or simply not available to test.

    • Google Page Speed Service (Access Requested)
    • Yottaa (Access Requested)
    • Cotendo Cloudlet
    • Strangeloop
    • Blaze

    PHP Currency Converter

    August 18, 2011 PHP, Programming

    Here is another PHP code snippet from my library. This PHP function allows you to calculate exchange amounts between 49 countries and 33 currencies.

    Function is based on the live conversion reference rates provided by European Central Bank.

    Usage

    • First 3 parameters are required. First one is the origin currency and the second one is target currency.
    • First 2 parameters should be the same type. If you are doing a county code based conversion both must be country codes. If you are doing currency code based conversion, both should be currency codes.
    • 3rd parameter is the amount you want to be converted. Should be decimal digits without any currency signs or codes attached to it.
    • 4th parameter is optional and set as true by default. When enabled function will prepend or append the currency sign (or code) to the output amount. You may want to turn that off if you will use the returned amount in a calculation.
    • 5th and the last parameter is calculation precision. Controls the number of digits after the decimal point. Default is 5.

    Usage Samples

    • currency_convert(“EUR”,”USD”,100)
    • currency_convert(“FR”,”GB”,98);
    • currency_convert(“AUD”,”CNY”,145,false,8);
    • currency_convert(“GR”,”DK”,3500,true,2);

    Download

    • Download PHP code snippet
    • Code is PHP5 compatible but it should also work on PHP4 (Untested)

    License

    This code is free to use, distribute, modify and study. When referencing please link back to this website / post in any way e.g. direct link, credits etc. If you find this useful, please leave a comment and share using the buttons below!

    PHP
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    <?php
    // Realtime currency converter by Pixel Envision (E.Gonenc)
    // Version 1.0 - 18 August 2011
    // Based on the live conversion reference rates provided by European Central Bank
    // http://www.ecb.europa.eu/
    function currency_convert($from, $to, $amount, $sign = true, $sensitivity = 5)
    {
        $RATES = $BASE = $in = $out = $append = NULL;
     
        //Array of available countries & currencies
        $CURRENCY = array(
            "US" => "USD",
            "BE" => "EUR",
            "ES" => "EUR",
            "LU" => "EUR",
            "PT" => "EUR",
            "DE" => "EUR",
            "FR" => "EUR",
            "MT" => "EUR",
            "SI" => "EUR",
            "IE" => "EUR",
            "IT" => "EUR",
            "NL" => "EUR",
            "SK" => "EUR",
            "GR" => "EUR",
            "CY" => "EUR",
            "AT" => "EUR",
            "FI" => "EUR",
            "JP" => "JPY",
            "BG" => "BGN",
            "CZ" => "CZK",
            "DK" => "DKK",
            "EE" => "EEK",
            "GB" => "GBP",
            "HU" => "HUF",
            "LT" => "LTL",
            "LV" => "LVL",
            "PL" => "PLN",
            "RO" => "RON",
            "SE" => "SEK",
            "CH" => "CHF",
            "NO" => "NOK",
            "HR" => "HRK",
            "RU" => "RUB",
            "TR" => "TRY",
            "AU" => "AUD",
            "BR" => "BRL",
            "CA" => "CAD",
            "CN" => "CNY",
            "HK" => "HKD",
            "ID" => "IDR",
            "IN" => "INR",
            "KR" => "KRW",
            "MX" => "MXN",
            "MY" => "MYR",
            "NZ" => "NZD",
            "PH" => "PHP",
            "SG" => "SGD",
            "TH" => "THB",
            "ZA" => "ZAR"
        );
     
        if (strlen($from) == 2 && strlen($to) == 2)
        { //Operate using country code
            if (isset($CURRENCY[$from]))
            {
                $in = $CURRENCY[$from];
            }
            if (isset($CURRENCY[$to]))
            {
                $out = $CURRENCY[$to];
            }
        }
        elseif (strlen($from) == 3 && strlen($to) == 3)
        { //Operate using currency code
            if (in_array($from, $CURRENCY))
            {
                $in = $from;
            }
            if (in_array($to, $CURRENCY))
            {
                $out = $to;
            }
        }
        else
        {
            echo "Error: You should either use 2 digit country codes or 3 digit currency codes!";
        }
     
        if ($in && $out)
        { //Both currencies available, continue
            //Load live conversion rates and set as an array
            $XMLContent = file("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
            if (is_array($XMLContent))
            {
                foreach ($XMLContent as $line)
                {
                    if (ereg("currency='([[:alpha:]]+)'", $line, $currencyCode))
                    {
                        if (ereg("rate='([[:graph:]]+)'", $line, $rate))
                        {
                            $RATES[$currencyCode[1]] = $rate[1];
                        }
                    }
                }
            }
            if (is_array($RATES))
            {
     
                $RATES["EUR"] = 1; //Add EUR reference to array
                if ($in != "EUR")
                { //Normalize rate to given input
                    $BASE = $RATES[$in];
                    foreach ($RATES as $code => $rate)
                    {
                        $RATES[$code] = round($rate / $BASE, $sensitivity);
                    }
                }
     
                //Prepend or append the currency information
                if ($sign)
                {
                    if ($out == "USD")
                    {
                        echo "$";
                    }
                    elseif ($out == "EUR")
                    {
                        echo "&euro;";
                    }
                    elseif ($out == "GBP")
                    {
                        echo "&pound;";
                    }
                    elseif ($out == "JPY")
                    {
                        echo "&yen;";
                    }
                    else
                    {
                        $append = $out;
                    }
                }
     
                echo round($amount * $RATES[$out], $sensitivity); //Output the converted amount
                if ($append)
                {
                    echo " " . $append;
                }
     
            }
            else
            {
                echo "Error: Unable to load conversion rates!";
            }
     
        }
        else
        {
            echo "Error: Either one or both of given currencies are not available for conversion!";
        }
    }
     
    echo currency_convert("EUR", "USD", 1);
    ?>

    Realtime lip-sync code snippet for Flash using AS3

    August 17, 2011 Flash, Programming, Tips & Tricks

    One of the flash projects I have been working on has required a lip sync talking. Dialogues were dynamic so frame by frame matching was out of the question. So, I ended up with the following action script 3 code which I’m sharing with you here…

    It processes the input sound in real time, which returns the different values based on the sound volume and also outputs the sound itself.

    You can use those values to match up mouth animation frames as provided in the sample. But you may also simulate the effect using a single mouth image and scaling it based on the values returned by the function…

    Usage

    • FLA project is compatible with Flash CS4, contains sample speech & mouth animation images.
    • speech() is the the sound file linked from the library.
    • mouth is the animation clip that contains mouth drawings.

    Downloads

    • Sample SWF file for preview.
    • Download FLA project

    License

    This code is free to use, distribute, modify and study. Mouth animation and the images provided in the sample FLA is NOT free to use in anyway. When referencing please link back to this website / post in any way e.g. direct link, credits etc. If you find this useful, please leave a comment and share using the buttons below!

    ActionScript
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    /*
    - Copyright 2011 Pixel Envision (E.Gonenc)
    - http://www.pixelenvision.com/
    - support@pixelenvision.com
    */
     
    var left: Number;
     
    function processSound(event: SampleDataEvent): void {
      var bytes: ByteArray = new ByteArray();
      playerObject.sourceSnd.extract(bytes, 4096);
      bytes.position = 0;
      while (bytes.bytesAvailable & gt; 0) {
        left = bytes.readFloat() * 128;
        if (left & lt; 0) {
          left = -left;
        }
        var scale: Number = left * 2;
      }
      event.data.writeBytes(bytes);
     
      //Define mouth animation here
      if (scale & lt; 1) {
        mouth.gotoAndStop(1);
      } else if (scale & lt; 10) {
        mouth.gotoAndStop(2);
      } else if (scale & lt; 25) {
        mouth.gotoAndStop(3);
      } else if (scale & lt; 50) {
        mouth.gotoAndStop(4);
      } else {
        mouth.gotoAndStop(5);
      }
      //Define mouth animation here
     
      trace(scale);
    }
     
    var playerObject: Object = new Object();
    playerObject.sourceSnd = new speech();
    playerObject.outputSnd = new Sound();
    playerObject.outputSnd.addEventListener(SampleDataEvent.SAMPLE_DATA, processSound);
    playerObject.outputSnd.play();
    stop();

    Witches' Brew Teaser Sketch

    August 16, 2011 Coming Soon

    Here is a teaser sketch of our main character, The Witch! Sorry about the quality, but the photo is taken directly from my wife’s sketchbook…

    Game is scheduled for release next month and will be available on this halloween season!

    Finding visitors real IP using PHP

    August 16, 2011 PHP, Programming

    Third PHP snippet I’m sharing from my library is code that tries to get most accurate real IP of the visitor. There are few headers with the IP information but those can be populated with many different ip’s based on customers route to your server. This script evolved in time and I believe it returns a very accurate source IP based on the information given in the request headers. But if you find a bug or a way to enhance it more, let me know!

    License

    This code is free to use, distribute, modify and study. When referencing please link back to this website / post in any way e.g. direct link, credits etc. If you find this useful, please leave a comment and share using the buttons below!

    PHP
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php
    function realip()
    {
     
        $ip = trim($_SERVER['REMOTE_ADDR']);
     
        if ($_SERVER["HTTP_CLIENT_IP"])
        {
     
            if (preg_match("~\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}~", trim($_SERVER["HTTP_CLIENT_IP"])) && !preg_match("~^((0|10|127|169\.254|172\.(1[6-9]|2[0-9]|3[0-1])|192\.0\.2|192\.168|255\.255\.255)\.)~", trim($_SERVER["HTTP_CLIENT_IP"])))
            {
                $ip = trim($_SERVER["HTTP_CLIENT_IP"]);
            }
     
        }
        elseif ($_SERVER["HTTP_X_FORWARDED_FOR"])
        {
     
            foreach (explode(",", $_SERVER["HTTP_X_FORWARDED_FOR"]) as $key)
            {
     
                if (preg_match("~\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}~", trim($key)) && !preg_match("~^((0|10|127|169\.254|172\.(1[6-9]|2[0-9]|3[0-1])|192\.0\.2|192\.168|255\.255\.255)\.)~", trim($key)))
                {
                    $ip = trim($key);
                    break;
                }
     
            }
     
        }
        return ($ip);
    }
     
    $IP = realip();
    ?>

    PHP e-mail validation code snippet

    August 15, 2011 PHP, Programming

    Validation of email

    This is the second PHP snippet I’m sharing from my library. It is not very complicated but get’s the job done. It both checks for the email syntax (REGEX) and existence of the email domain by checking MX & A records…

    License

    This code is free to use, distribute, modify and study. When referencing please link back to this website / post in any way e.g. direct link, credits etc. If you find this useful, please leave a comment and share using the buttons below!

    PHP
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    $email = "test@domain.com";
     
    if (!preg_match("/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)*\.\w{2,8}$/i", $email))
    {
     
        //E-mail syntax is invalid
        
    }
    elseif (!checkdnsrr(array_pop(explode("@", $email)) , "MX") & amp; & amp;
    !checkdnsrr(array_pop(explode("@", $email)) , "A"))
    {
     
        //Email server is not valid
        
    }
    else
    {
     
        //E-mail is valid
        
    }
    ?>

    ZIP (POSTAL) Code Validation Regex & PHP code for 12 Countries

    August 14, 2011 PHP, Programming

    For the last couple of years, I’ve been mostly doing PHP coding. As a result, I have small library of code snippets of my own. Those are simple but useful PHP codes that might save some time on your work!

    First one I’m sharing here today is the combination of regular expression and the PHP code to do ZIP code (or Postal Code) validation for following 12 countries: United States of America, United Kingdom, Germany, Canada, France, Italy, Australia, Netherlands, Spain, Denmark, Sweden & Belgium.

    Code is provided in PHP but the REGEX codes are universal and those can be used with other programming languages.

    License

    This code is free to use, distribute, modify and study. When referencing please link back to this website / post in any way e.g. direct link, credits etc. If you find this useful, please leave a comment and share using the buttons below!

    PHP
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
    $country_code = "US";
    $zip_postal = "11111";
     
    $ZIPREG = array(
        "US" => "^\d{5}([\-]?\d{4})?$",
        "UK" => "^(GIR|[A-Z]\d[A-Z\d]??|[A-Z]{2}\d[A-Z\d]??)[ ]??(\d[A-Z]{2})$",
        "DE" => "\b((?:0[1-46-9]\d{3})|(?:[1-357-9]\d{4})|(?:[4][0-24-9]\d{3})|(?:[6][013-9]\d{3}))\b",
        "CA" => "^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ])\ {0,1}(\d[ABCEGHJKLMNPRSTVWXYZ]\d)$",
        "FR" => "^(F-)?((2[A|B])|[0-9]{2})[0-9]{3}$",
        "IT" => "^(V-|I-)?[0-9]{5}$",
        "AU" => "^(0[289][0-9]{2})|([1345689][0-9]{3})|(2[0-8][0-9]{2})|(290[0-9])|(291[0-4])|(7[0-4][0-9]{2})|(7[8-9][0-9]{2})$",
        "NL" => "^[1-9][0-9]{3}\s?([a-zA-Z]{2})?$",
        "ES" => "^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$",
        "DK" => "^([D-d][K-k])?( |-)?[1-9]{1}[0-9]{3}$",
        "SE" => "^(s-|S-){0,1}[0-9]{3}\s?[0-9]{2}$",
        "BE" => "^[1-9]{1}[0-9]{3}$"
    );
     
    if ($ZIPREG[$country_code])
    {
     
        if (!preg_match("/" . $ZIPREG[$country_code] . "/i", $zip_postal))
        {
            //Validation failed, provided zip/postal code is not valid.
            
        }
        else
        {
            //Validation passed, provided zip/postal code is valid.
            
        }
     
    }
    else
    {
     
        //Validation not available
        
    }
    ?>

    Witches' Brew HD Teaser Trailer

    August 8, 2011 Coming Soon

    Our first game is revealed! Here is the teaser trailer of our halloween game for both kids & adults. We hope you’ll like it!

    12»
  • Tags

    3ds Max Coming Soon CoronaSDK Featured Flash Lua MAXScript PHP Programming Reviews Tips & Tricks Unity 3D Windows Phone
  • Recent Comments

    • Yogesh Singh on ZIP (POSTAL) Code Validation Regex & PHP code for 12 Countries
    • Admin on Maxscript – Vray Cubemap Generator for Unity
    • charlie on Maxscript – Vray Cubemap Generator for Unity
    • Mastan on PHP Currency Converter
    • Rakesh Vishnoi on ZIP (POSTAL) Code Validation Regex & PHP code for 12 Countries
    • Find us on

      amazonandroidapplefacebooklinkedintwitterwindowsyoutube
    • Company Information

      Pixel Envision Limited is a company registered in England, company number: 09558675. Registered Office: Preston Park House, South Road, Brighton, East Sussex, BN1 6SB, United Kingdom

    • Privacy Policy
    Copyright © 2011-2020 Pixel Envision Ltd, all rights reserved.
    We use cookies to ensure that we give you the best experience on our website, if you continue to use this site we will assume that you are happy with it.OKPrivacy policy