« first day (2905 days earlier)      last day (2105 days later) » 
00:00 - 17:0017:00 - 00:00

12:58 AM
@Bálint Why do you flush your cube?
 
1:09 AM
@Bálint What's wrong?
@AlexandreVaillancourt lol
 
@FreezePhoenix I think it's that it spins
 
@AlexandreVaillancourt #LikeAMinecraftItem
@AlexandreVaillancourt I'm assuming that was sarcastic... You did know that 127 ips are Local host, right?
 
Yeah :)
"There's no place like 127.0.0.1"
 
This site can’t be reached

127.0.0.1 refused to connect.
Try:
Checking the connection
Checking the proxy and the firewall
ERR_CONNECTION_REFUSED
 
1:27 AM
Via your web browser?
 
I used to have wamp installed, so it would actually respond, but heh, I have formatted this PC recently and did not reinstall.
 
And... wamp is?
 
a Windows Apache MySQL PHP server
/stack
 
Meh. I'm not on windows.
 
1:42 AM
Bah, it's a package that installs the AMP stack and makes it easy to setup in a dev context.
It comes out of the box on a linux distribution..
 
 
5 hours later…
6:36 AM
@AlexandreVaillancourt thank you! That sounds great, I'll do it that way :D
@AlexandreVaillancourt It's easy to gather too much research data, after all I have a big project in mind, a strategy coding game where users code up their AI units instead of micromanaging them like in a normal RTS/Civ-game
and if it's not an RTS/Civ, it's at least like a JRPG, where you kill and loot and reassemble your own units, and sometimes hack enemies for some of their code (some, code that you could have written yourself, some, code that provides new functionality)
Blog posts like this about "smart data" and loot mechanics are pure gold to me
 
 
3 hours later…
9:53 AM
Would you guys suggest that I go with Typescript for game devving or..?
Right now I'm working with Javascript and I don't indent to switch
 
10:09 AM
@AlexMitan Literally doesn't matter
If your language can run the game you intend to make, then use it
 
No
 
@Bálint o/
 
You're never alone
There's always something watching you
 
like my laptop :D
and my wall
 
10:18 AM
And Mark Zuckerberg
 
yep
So, how are you doing
 
Quite nice
I've got a summer job
 
that is good :)
 
So now I'm going there
 
I've just found some malicious software on my laptop.
 
10:21 AM
That's nice
Not the virus, just that you found it
 
@AlexMitan Typescript is just Javascript with some static typing features and some ECMA 2017 features and a slightly more robust class system on account of those features.
I would choose Typescript because I prefer having those features for game development, and it is 99% just Javascript. (Using all the new stuff is optional. Using static typing is optional, even, but if you're not using static typing you probably have no reason to be using Typescript.)
 
But if you aren't familiar with it or prefer js, just go with it
 
I was just thinking it'd help keep track of the classes? I'm probably going against the flow of JS
I mean usually I love how dynamic and hacky JS is, I just feel like I "should" be strong-typing or something
 
@AlexMitan well in plain javascript yes, sort of. not so much you're going against the flow, more that there's very little tools available to help you do that.
 
And also, I just need advice about something
 
10:29 AM
@AlexMitan either way is fine. people program games in python, which has no static typing. there isn't a "should".
 
It's far too easy to over-design
like I'm too afraid to write bad code or code that I KNOW will have to change
 
I wrote code that I know will have to change all the time
 
for example, I want multiple types of units with all sorts of abilities
I went from "hard-code some units" to "modularise abilities away from units" to "use lambdas and data to abstract away effects from abilities" without even getting anything out
Do I create a "heal" ability that heals 10? Do I parameterise it? Do I have only one instance of it in the game? Do I create an instance for each unit? Do I bind it? Keep it as-is? I'm going insane
 
Have you ever heard of YAGNI?
 
In through one ear, out through both
I'm exploring depth-first, aren't I
 
10:33 AM
Yes, and it's not a good way to program, because you abstract before you know how you should be abstracting
 
and games can have infinite depth
Premature abstraction is even more evil than premature optimisation isn't it
 
Yes
Here's my work process:
1. Identify what I'm trying to do over the next period of work (which might be 2 weeks or a month). If it's a game, my goal might be add 2 types of units. (Out of a potential several dozen, I only care about two.)
2. Write so that I meet those goals. Write code that supports those 2 units, even if it will not work for adding a third. I will have to rewrite this code; that is fine.
3. Test to make sure the code I've written has met those goals.
I'm done! Next time I will pick other goals. That might be add 2 other units. When I do that, I will be updating and refactor
But in each sprint I'm targeting adding 2 units while not breaking anything that already existed. I'm not adding 10,000 units in the first sprint.
I do not know how to abstract for all the units I might add at the start. I need to do that by first doing a bit at a time.
YAGNI demands I don't bother trying to accommodate for the later ones first.
You might notice in this that I will regularly write code that (on later reflection) will be sort of bad, and also, I will regularly write code that i KNOW will have to change.
But I am writing code that is good now. In five weeks time, I will be writing code that is good for my purposes in five weeks time.
 
You're right... You're spot-on
 
Also honestly, my first project in this framework I'm using from 6 months ago is bad compared to the code I'm writing now in this framework. It is full of mistakes. All of your code is going to seem a bit bad later—because you have now learned things and improved and know better how to do things now. That's how it works.
 
Coupling is the same thing for me... I worry that I'm writing hacky coupled code when really I should be using this magnificent event system from the get-go
 
10:38 AM
At some point I will realise the unit system I've made isn't working well, and will take a sprint purely to rewrite it to better accommodate future work. But I do that if and when I recognise it's an issue. I do that only then because only at that point do I know what shape the system needs to take, because i have now written 20 units and I understand better what I need and what will & won't work well.
When I refactor that unit system though, I will be refactoring it to target (a) the units I currently have and (b) the units I plan to add in the immediate future. Not all possible other 100 units I might add ever forever.
@AlexMitan Write your hacky coupled code until you figure out why you need the event system and know how & when to use it.
 
@doppelgreener This will be an engineering learning experience before it's game dev, won't it
It's probably why I've quit so many projects before finishing them
Man, I suck at iteration
 
Which one is better, Git vs Mercurial?
 
@AlexMitan Trying to get everything right in the beginning will do that.
The plan is to get everything a bit wrong but continue on and find out what's wrong and why and resolve that when you discover it. ;)
 
@AlexMitan
if you ever code something that "feels like a hack but it works," just remember that a CPU is literally a rock that we tricked into thinking
 
@TheMaskedRebel git
 
10:46 AM
why?
 
More support
Plus the largest open source sites tend to use git
 
Ok thanks. I'm just setting up version control.
 
Which means you can use it in more places
 
You guys are great, it's really inspiring considering my project right now is three unconnected pillars: some D3 graphics, a console simulation of objects whacking each other's shins, and a DSL that doesn't have functions yet
 
also git implements distribution & easy branching better. it had the best support for those features from the get-go, and mercurial was originally like SVN (poor distribution, heavyweight branching) and only later moved toward what git was doing and it shows.
^ some advice i really love which applies very well to a lot of things.
(yellow text is the boy on the right)
 
10:52 AM
I love that
@doppelgreener I have a wild theory that I'm getting insecure because all of the language and gamedev tutorials around are in strongly-typed OOP good ol' languages like C++ and Java
And I'm here with my insecure JS gizmos
I should probably capitalise on it instead of being afraid I'm not "doin it right", even if it involves jotting down some class attributes that won't appear in my code editor on their own because "that argument could be anything"
 
@AlexMitan So, there is a reason for that: static typing is really, really, really useful in game development. We have large, complex systems involving a lot of different types being passed around. Static typing helps us navigate that a lot: it ensures at compile time our types are valid, and it helps us understand and reason about our code while we're reading and writing it.
 
I should only think about that later on though, right? After I have a fun prototype that someone would willingly inflict on themselves
related: I love data-driven programming
 
This stuff is good.
But you start simple with it to help yourself figure it out.
Also, in that situation, I would be programming only for a minimum number of features. Like in that example I wouldn't program for more spells, elements, or attacks than I've defined enemies with.
And the enemies aren't defined until I add them to the program, so I might have a 2 week sprint just implementing the Goblin Archer.
 
I'm doing the typical "overestimate what I can do in a day, underestimate what I can do in a year".. I'm taking up to a year off of every obligation in my life to get better at things, I'm too used to the "get it perfect from the get-go" approach of how things were in college
At least that's how things are handled here
 
11:22 AM
Shoots goblin
It explodes, blood bursting everywhere
 
two rules of thumb:
1. nothing worthwhile takes less than a day to do. (very, very rarely you will take half a day to do something: now you are ahead of schedule. hooray!)
2. for every estimate, double it and add one. did you estimate 1 day? that's 3 days now. did you estimate 4 days? that's 9 days now.
I usually wind up with an estimate of 1 day for everything I think might take less than 1 day.
@TheMaskedRebel I hope you're going to clean that up!
 
11:55 AM
I'm now uploading my game to a repo
It is private but I will gladly give it to anyone who asks
 
@doppelgreener I once got scolded in uni for "not having enough classes" in a Java problem
I'm only theoretically a hacky master iterator, like I know I WANT to be
 
@AlexMitan that's a weird criticism
even in java
but if your classes are doing too much and things need to be separated out more, sure
but you usually find that out by it not working
the academic world can be a bit weird
 
Ok, I'm gonna design a prototype of two random fleets randomly fighting each other with some degree of visual representation. I won't force OOP, I won't use my DSL yet, and I'll only use D3 if it makes things easier. I'll use plain functions as abilities (attack(user, target), heal(user, target)) and not much else
Oh boy
 
12:18 PM
Sounds great
I wouldn't even use d3, just draw ship sprites/shapes on a canvas
 
It's just that d3 gives me those nice delays and transitions
It might literally be faster
Also, I'm a bit confused with something
I want a tree-based data structure for the game, where a world has two fleets, each fleet has units, etc
...or is it too early for that
...wow this is hard to shake
 
12:52 PM
Hello!
 
@AlexMitan well you need the world, your units, and your concept of fleets (because there are two of them, and they define whether ships are friend or foe). how you organise them will depend on what you need.
@FreezePhoenix Ahoy!
 
@doppelgreener Tree is good, sending a message relays a message directly to root, which relays the message downwards recursively
 
A super simple version of that ship simulation is:
1. have the ships float around using boids
2. each ship shoots at the nearest enemy ship in range, or the most damaged one in range
3. ships try to get in range of enemy ships
4. ships can only shoot sideways
in fact that would be the order of implementation
 
Oh, it's not real-time, if you're talking to me
 
step 4 will significantly affect the steering code, since ships have to get in range but also be turned sideways
i am :P
gotcha
 
1:03 PM
It's a turn-based strategy game
I do want to get on a boid-like game at some point, and it might come in handy, so I'm screencapping that
 
@AlexMitan I'd put all of this in a bookmark directory, and I'd start design and implement and then revisit all of this to have a better picture of where I'm at, and where I could go from here provided the new way of seeing what they're suggesting.
 
basically I want a relatively simple game to support my coding interface, and then spread the coding interface to other game types
like actual coding by the players
I have a good feeling about this
 
Wat da... Nice!
 
I have a slight itch that it "won't be efficient with 100 ships" or something, but I can't assume my message system will be a performance issue in a turn-based game right
 
@AlexMitan Just make relevant streams for each team, and make it a chance that they hit a certain player or something
 
1:10 PM
 
Dunno how you did that with JS
 
I'll refine later, this is my system for now, when it starts becoming a problem that the "red healer healed his fleet" message reaches the blue team's graphical components, I'll fix it
until then, I probably have to get used to this kind of rough iteration
every object is a GameObject that has a parent and children, like a tree
a message is [sender:GameObject, string, details: object], like [redInterceptor, "DAMAGE", {amount:5, receiver:blueHealer}]
getting the root just makes you go to the topmost level, and the message is put there to be trickled down... to everything
 
looks cool :)
hooray for let and ecma 2016-style string interpolation!
 
Oh yeah :D
Ok, I know the answer will be "depends", but should objects automatically add themselves to their parents or do I not even specify a parent and a.. ergh
Ok, deep breath, main goals first, since it's a tree, I want an arbitrary number of levels of tree, so I can have two units existing alongside and separate from entire fleets. So... parent always specified in constructor, but no automatic adding?
Also, should I use a Set() rather than an array for children?
 
1:33 PM
@AlexMitan do you need an arbitrary number of levels?
i mean if it's world -> fleet -> ships, you just need 3 levels
 
@doppelgreener Yeah, not because I NEED it, but right now, it's literally easier to have that
 
gotcha
 
Wait, JS doesn't support named args?
when calling a function?
 
it doesn't :(
@AlexMitan what kinds of objects and parents are we talking about?
 
@AlexMitan WAT
Are you saying you can't do func( myArg=4)
 
1:37 PM
apparently
@doppelgreener For now it's mostly about targeting... choosing objects as targets from a group rather than explicitly filtering
like targetStrongest(enemies)
 
@FreezePhoenix hey
 
or targetStrongest(allies)
 
@AlexMitan fun thing: you can have multiple representations of the ships
 
Oh crikey, I think I have an issue already
 
you might just have:
1. world object
2. world has an array of ships, or an array of ships of one fleet and an array of ships of the other fleet, or both! (three arrays total)
3. ships have a fleet
then your targeting and collision might want to sort ships into some kind of tree structure based on proximity
 
1:39 PM
@AlexMitan Well yes you can do that
 
@doppelgreener Hah, that's awesome, but as I said, right now the game conceptually works like this
location doesn't exist, anything can target anything
I do have an issue though. I send a receive damage message that everyone gets, which is intentional, and everything takes damage, so far so good
...on receive, a unit removes itself from the parent array if it dies
which screws up the iteration
 
cool beans :) i am just throwing simple things out there that work(tm) so you can consider them (including deciding you don't need them)
@AlexMitan when you're iterating from an array and removing elements from it, always iterate backwards: start at the last index and do for (let i = arr.length - 1; i >= 0; i--) { ... }
 
Should I just set a "dead" flag? Or is what you said enough?
 
@AlexMitan or set a dead flag, yes
you can use the dead flag to pass over it for most computations but draw its sunken boat corpse as a warning to all other boats
 
for now, I'll reverse-iterate, and also set a dead flag for use later, maybe with "clean()" methods
thank you very much!
oh that's good!
Thanks!
 
1:45 PM
cool beans :)
 
At least I don't have to manually deallocate memory or something like that
 
yes thank goodness
 
Hell yes
I love trees so much
 
2:01 PM
nice :)
 
Trees... :| That's what I'm writing next!
Since a javascript native object can't detect it's parent...
 
Do you want to look through my code? It's on github
 
@AlexMitan You wrote a class for Tree?
 
GameObject is a tree node, yes
 
o.O I'd rather right my own
 
o.O It's a little specialized for your usage, so I'm gonna write my own
 
 class GameObject {
    get root() {
        // get topmost game object, the "world"
        let obj = this;
        while (obj.parent != null) {
            obj = obj.parent;
        }
        return obj;
    }
    sendMsg(str, data) {
        // relay a message directly to the world, to be passed down
        this.root.receiveMsg(this, str, data);
    }
}
@AlexMitan getter syntax could possibly be used here ^
if it's supported in your environment
 
It should be, yeah. Also I'm probably gonna go for canvas first, you were right
 
Whoa loops inside of a getter is bad practice
2
 
? Why
Also, isn't my face showing as an avatar?
 
2:18 PM
@AlexMitan Because each time you access the property, you call that loop... again... and again.
 
Yeah, but how is it different from what I do now, as in obj.root() ?
 
Loops inside a getter is bad practice. Starred.
When you get a property, you expect it to return the property, not do a bunch of stuff before returning the property
you can get yourself in all sorts of trouble that way
 
Mkay, fair enough, learn something new every day
I'm ready to do a visual prototype I think, I shouldn't worry about the good ol' "things render themselves" yet right
 
oh right, yeah
getters should be computationally simple and not take time to execute
 
@AlexMitan Just set obj.root to a value
 
2:27 PM
right
it's not going to change, after all
we can set it after initialisation or something
or the first time we call root() it runs that loop, then stores the result (as this._root) and returns the result. When we call it next time it first checks if this._root is defined and if so, returns that.
 
that's fair, I'll put it on todo since it's not critical right now but that makes sense
Ok, crazy idea, how do you query a tree?
like treeNode.query(lambda)
 
i guess you'd have every node run the same query recursively, and flatten the results
 
and it returns all elements below that satisfy the condition. I know how to do it in the obvious sense but is there a clever way to do things that I'm missing?
 
[cough] premature optimization [cough] but no not really, not generically
cache your results to avoid doing it frequently, if your results won't change regularly
because it is an expensive operation
 
Fair enough
Seriously, your advice has been amazing, thank you
Even if it's just reassurance that it's okay to... well.. breadth-first this stuff
Also, when I export stuff, is it better to always export an object with attributes, like
`module.exports = { Unit }; ` just in case I want to add more later?
That's what I've been doing so far
 
2:50 PM
You're welcome. Consider that for example if your query is about proximity ("get me everything I might be colliding with") then the solution is to maintain a quadtree structure for that query, because it is optimized to make specifically just that query extremely rapid.
but that means you won't be running just any generic query for that structure: you're only interested in one thing, potential collisions.
@AlexMitan Yes
and then import { Unit } from './units';
That's preferable to having a default export even if you 99% of the time only export a single thing from each file
 
Awesome, then my intuition was right
Oh heavens above, "require is not defined"
when opening in browser
 
require is not standard syntax
it gets handled (and usually replaced) by stuff like webpack
or it is a function that gets defined, by something like require.js
 
Gonna use browserify or something
 
sounds good
i use webpack but it can be fiddly to set up
there is usually a few minutes of despair and pleading with the command line to please work
but then it works and everything is awesome
like that
 
Oh, it just added a ridiculously long line at the beginning of my script
nifty
...and 18000 at the end. I'm so unattentive
 
3:01 PM
that'd be its internal minified code for handling your stuff
 
class Tree {
  constructor(val) {
    let temp = Object.assign(this, val);
    if( typeof temp !== 'object') {
      throw TypeError('Tree expects an object');
    } else {
      Object.keys(temp).forEach((key, index) => {
        if(typeof temp[key] === 'object') {
          temp[key] = Tree.convert(temp[key])
        } else {
          temp[key] = Object.setPrototypeOf(new temp[key].constructor(temp[key]), Leaf.prototype);
        }
        temp[key].parent = (temp.__proto__ == Tree.prototype) ? temp : Object.setPrototypeOf(temp, Tree.prototype);
Outline finished
Now just have to make methods
 
I probably have way less experience than you, plus I'm not sure what you're trying to do, but are you sure you.. erm... need all of that?
plus watch out, you typed in "objext" at some point
 
class Tree {
  constructor(initialContents) {
    this.nodes = [];
    if (!!initialContents) {
      this.nodes.concat(initialContents)
    }
  }

  add(item) {
    this.nodes.push(item);
  }
}
 
NO Lemme do what I want
 
3:10 PM
(plus then add navigating downwards etc)
please do, i cannot make you do anything
that was just "off the top of my head, how would i do that in a dead simple way"
(it's actually too simple because it's not a tree at all yet)
 
3:24 PM
@doppelgreener what's the !! ?
@FreezePhoenix I'd have to ask you, why do you feel the need to separate branches from leaves as classes?
 
Because a branch isn't the same as a leaf
 
@AlexMitan it's a shortcut for truthiness.
 
But I understand
class Tree {
  constructor(val) {
    let temp = Object.assign({}, val);
    if( typeof temp !== 'object') {
      throw TypeError('Tree expects an object');
    } else {
      Object.keys(temp).forEach((key, index) => {
        if(typeof temp[key] === 'object') {
          temp[key] = Tree.convert(temp[key])
        } else {
          temp[key] = new Branch(key)
        }
        temp[key].parent = temp
      })
    }
    this.__val__ = temp
  }
  static convert( obj ) {
    obj = new Branch(obj);
 
...they're beautiful
 
@AlexMitan SO SHINY!!!!
 
3:27 PM
Plus, that one drone's health was taken away through "gameplay methods"
a damage message directed to it specifically
I feel good about this :D
 
Guys... try and break Tree
 
foo = (something truthy)
!foo === false
!!foo === true

bar = (either null, undefined, or 0, or an empty string, or [just weeps a bit at the state of javascript])
!bar === true
!!bar === false
Ironically despite that [] == false, !![] === true
 
@doppelgreener Yeah, but why would that be different from if(bar)?
 
@AlexMitan converts to bool, that's it, very little difference
 
@AlexMitan if(bar) requires type casting
 
3:30 PM
oh, so it's JS screwery
 
@doppelgreener do you know what constant is not equal to itself?
 
@AlexMitan that's the technical term, yes. :)
 
@AlexMitan You shush about JS
 
I love JS
I love JS like the adorable monster baby aberration it is: carefully and cynically
 
Here's some JS screwery for you:
 
3:31 PM
@FreezePhoenix NaN? :D
 
  function j(a,b,c) { return `${a}+${b}+${c}` };
  j = Function.reArg(j, [2, 1, 0])
  j(1,2,3);             // '3+2+1'
@doppelgreener Dang it that was fast
 
Be grateful I'm not barging in here to let you all know that you should all rather be doing this in Lisp or something
 
HAA
@FreezePhoenix That's some cool stuff right there though, reminds me of numpy transposing
 
part of my normal lint config is to just forbid the use of the == operator because it's bad
 
3:32 PM
@AlexMitan Hey, I made Function.reArg
 
@FreezePhoenix Oh, nifty then!
 
  XtraUtils.Function.addMethod('reArg', (function(){
    const _toString = Object.prototype.toString,
      _isNumber = val => typeof val === 'number',
      _reOrg=(a,c)=>{let b=Array(a.length).fill();a.forEach((a,d)=>{b[c[d]]=a;});return b;},
      _regularize=(a)=>{let b=[];if('[object Array]'===_toString.call(a)){return a;}keys(a).filter(_isNumber).forEach((c)=>{b[c]=a[c];});return b;};
    /**
     * Re-arranges the arguments to a function.
     * @param {Function} fn The function to remap the arguments.
 
what's .fill?
 
Fills the array with a value
In this case, the value is not defined, so it's undefined
If you don't fill the array, you can't map it.
It's just not an array in that sense
Array(9); // [ undefined * 9 ]
 
Yep, tested it out
Good to know
 
3:35 PM
Array(9).fill(); // [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
@AlexMitan For a full list of nifty things visit: freezephoenix.github.io/XtraUtils/index.html
now If you don't mind I'm gonna compress my trash files
Stupid excuse. I only have 2 files.
BTW How long have you used JS? Just curios
 
:D
(it's not wrong)
 
let arr = []
if( true ) {
  const val = Symbol('__val__')
  class Tree {
    constructor(value) {
      let temp = Object.assign({}, value);
      if( typeof temp !== 'object') {
        throw TypeError('Tree expects an object');
      } else {
        Object.keys(temp).forEach((key, index) => {
          if(typeof temp[key] === 'object') {
            temp[key] = Tree.convert(temp[key])
          } else {
            temp[key] = new Branch(key)
          }
          temp[key].parent = temp
        })
Kinda hacky but keeps the security up a little
 
Javascript The Good Parts is a great book
 
It is a good book that I've never read,
 
written by one of the worlds great experts on JS, who is also on the committe for maintaining the standard.
He said one of my favorite things about JS: "I challenge you to design and implement a language in 2 weeks and have it turn out as well as JS did."
 
3:49 PM
@AlexMitan What do you think?
 
@Almo It is! :D
 
@Almo Inb4 lisp
 
here's my hope though, as a web developer:
1. something like webassembly catches on, as a lower-level language implemented by all browsers
2. browsers start supporting websites directly supplying webassembly code
3. someone makes a C#-to-webassembly compiler
4. we now program websites using C#
or python, or whatever your favorite language is
 
Doesn't look like he implemented LISP in 2 weeks
Javascript was designed and implemented in 2 weeks.
 
And then it became the language of the web
in Coding Projects and Factorio Heaven, 1 min ago, by FreezePhoenix
Yesterday there were 170 packages on NPM that match the search javascript utilities and now there are 329 matches!
 
user4704
4:09 PM
It's like game engines on crates.io
 
@doppelgreener Can't you do all that
@FreezePhoenix \o
 
@TheMaskedRebel With great difficulty of transpiling to JavaScript and re-implementing language features in JavaScript.
The idea would be to have a runtime that simplifies that by not implementing features wrong in the first place. :P
 
@JoshPetrie LOL
 
@doppelgreener Given that other languages can run on the JRE, your proposal is a possible endpoint variant of Java's failed push for web runable code.
@doppelgreener alternatively, you can code up websites in non-web languages. But it's not always pretty. I coded up a web based employee time clock system in C++ once by couting a bunch of html.
It was a bit of an academic one off, but some modern commercial sites will still drop from a scripting language to a compiled language for speed critical operations.
 
4:22 PM
@AlexMitan Neat. Is it rigged? I've yet to see green win.
 
^
@AlexMitan Too fast
 
4:50 PM
Phew. I hate it when your computer is so laggy you watch your CPU monitor not budge for 3 minutes
@Tyyppi_77 Hello!
 
user92578
Hey
 
Wait, it should work better now, blue randomly picks off enemies, red hits the most wounded one
@Pikalek In that version, one side dealt double damage
Does it display well for you guys now ?
 
user92578
Going home tomorrow, super hyped
 
user4704
Neat.
 
user4704
For how long?
 
user92578
4:58 PM
Long weekend ahead, need to be back monday night
 
user92578
the usual is to be back sunday night
 
o/
awesome :)
 
00:00 - 17:0017:00 - 00:00

« first day (2905 days earlier)      last day (2105 days later) »