« first day (1078 days earlier)      last day (4238 days later) » 
00:00 - 18:0018:00 - 00:00

00:03
00:56
Guys, i'm trying to understand component based systems. Does anyone know of any examples?
user4704
@user1895420 What don't you understand?
I don't think i've got a precise problem, which is why i'm looking for some example code :P
user4704
What do you expect to learn by just reading code though? It's extremely difficult to understand the "why" of most code, which means you often just end up copying things without a full understanding. Source code alone is a pretty poor learning medium.
user4704
You must have some idea why you are confused, though.
user4704
Otherwise you wouldn't know to ask for help.
00:59
haha that's true
i've been reading up on the ideas in this blog : t-machine.org/index.php/2007/09/03/…
user4704
Hrm.
But somewhere in there he sais something like: "entities should only store an identifier"
says*
user4704
That's not my favorite site.
not good?
Damn the internet and it's bad sources
user4704
You just need to treat it with a grain of salt like anything else.
user4704
01:01
So what's your confusion about storing an identifier?
Well he stresses that that's "all" an entity should store
user4704
That's one way to do it.
user4704
It's not the only way. The fundamental idea he's going for there (if I recall correctly) is valid.
So how then do i connect components to this entity?
user4704
It's the different between considering an entity to be: struct entity { std::vector<Component *> m_components; }
01:03
If it's not allowed to store any references to them
user4704
and struct entity { int id; }
user4704
And elsewhere, having a list of components associated with particular entities (conceptually: std::map<int, component *>, although that may not be the best specific implementation choice for a container)
user4704
The first approach (the list-of-components approach) is the naive one.
So why not just store the components in the entity?
user4704
01:04
It's quite functional however, and you can certainly make a system that way. It may be the better way to start out as it can be less confusing and less effort.
user4704
There are several reasons it is potentially bad, though.
user4704
The first is that it implies you do: foreach (entity in world) { foreach (component in entity) component.update(); } }, right?
Less confusing for sure :P
user4704
(well actually that's the main reason it's bad, but it leads to the other problems)
user4704
So what do you think might be a problem with that kind of update loop?
user4704
01:07
There are at least three big ones.
one sec, trying to write down my thoughts :P
I think i'm misunderstanding something, i thought components would only carry data. You would then select Entities with certain components and update them through some sort of System.
user4704
That's one way to do it.
oh god i'm going to make some sort of frankencode
user4704
It's not a wrong way, it's just different. You can consider components as data-only, and that tends to remove the explicit update method, but at some point that data usually gets updated.
But you learn so much from doing things that way :)
01:09
haha yea that's true
If you did things perfect the first time, you wouldnt learn much.
user4704
So there's still effectively the same process. You go through every entity, through all its components, and update them.
yea it seems so
user4704
Really, as an aside, there's something about component-based entity systems that seems to really mentally trip a lot of people up. There's no one true way to do it and you shouldn't worry about finding that one true way. You waste a lot of time that way. So I encourage you to experiment with various implementations and consider the pros and cons. You will learn much more that way.
user4704
That said, I'll tell you the potential issues with the first approach if you like.
01:12
I don't think there's ever one true way :P
please enlighten me :)
user4704
So, the first approach, at least that implementation, requires runtime dispatch of the update method (since you use polymorphism to store all the component pointers as pointers-to-base). Not huge, but it can add up.
user4704
A bigger issue, however, is that the components within an entity, and their ordering in the list, aren't defined.
user4704
That means you have very poor locality of reference in your code cache when you do that huge iteration.
What does that mean, locality of reference?
Stepping into the wonderful domain where data oriented and data oriented designs fight each other :P
user4704
01:15
@user1895420 Similar things stored next to eachother, essentially. Or similar things accessed in groups.
user4704
You basically update the components in any order. You might do "position, health, render, health, health, position, render, render," for example.
data oriented and object oriented designs*
user4704
Each time you jump to completely different locations in memory, which may not be in your cache, so you pay for a cache miss.
Ah i see, so that can slow down everything
user4704
Locality of reference is the reason that arrays are almost always better than linked lists.
user4704
01:17
Even for iterating across every element in the list, which appears to be algorithmically similar in complexity.
user4704
So, the biggest issue, which is related to the last one, is that there is no sane way to federate that update loop across multiple threads without knowing a lot about the data dependencies of each component relative to all other components in the system.
user4704
So, it can be very difficult to efficiently distribute the processing of all components over all your available cores.
user4704
That's where the alternative approach of making an entity "just" an ID comes into play.
user4704
This is also known as an "outboard" approach: gamedev.net/topic/…
How does that take away the problem then?
user4704
01:20
Essentially, you have various interfaces (often called "systems" but they need not be all inherited from some ISystem interface, per se) that create and own the individual components.
user4704
So you might have a system for physics, say PhysicsWorld. And a system for rendering, say Visualizer.
user4704
The actual entity system exposes hooks to allow you to connect callbacks for when entities are created or destroyed.
user4704
So, when you say entitySystem->CreateEntity(), the entity system creates a new entity object, assigns it an ID, and raises an event saying "Entity 32 was just created!"
user4704
(and similarly when an entity is deleted).
user4704
Any interested systems can inspect the entity ID -- and probably in practice the entity data file that describes what components should be in the entity -- and decide if it needs to create a corresponding component.
user4704
01:22
So, the physics system might create a RigidBody and associate it with entity ID 32.
user4704
The visualizer might create a sprite and associate it with entity 32.
user4704
But maybe the audio system says "I don't need to deal with entity 32 since his data description doesn't say he has an audio component."
user4704
And so it does nothing.
I see, so the components are stored at the systems, no at the entities.
user4704
Yup.
user4704
01:24
And you can Update() the entity system, which goes through all its components and updates them, if needed.
user4704
This way, every component in the system can be interacted with via its concrete type, and no virtual function calls are required. You update a lot of the same components with one call (and those components are probably stored next to eachother) for improved locality of reference.
user4704
And you know there are no concrete physical dependencies between systems, since the components have no direct access to eachother and don't even neccessarily know they are "components" in the sense of being inherited from IComponent.
user4704
That means you can update physics and rendering on two different threads, potentially
user4704
(although in practice, physics and rendering do often have a logical dependency that means you'd want to serialize their update, but other things don't)
So what if a system uses two different components? Or needs a component created by another system?
Or should that not be possible
user4704
01:27
A system can create as many different types of "components" as it needs for a given entity.
user4704
If the visualizer needs to create both a 2D sprite and a 3D model for a thing, it can. It can store and manage those as best suites the needs and performance of the system.
So what if one system creates a 'physicsComponent' and another system wants to use it?
user4704
If you need access to other types of components from other systems, you need to fabricate a means of establishing that dependency.
user4704
That's one of the potential disadvantages of this approach (although I would argue it's still mostly an advantage, because it forces you to be very explicitly about which types of systems can communicate with other systems)
Dang, it gets complicated quite quickly.
user4704
01:30
It's not that bad. Don't confuse explicitness with complexity.
user4704
Implicit is often more complex in practice than the other way around.
user4704
The simplest way to establish that kind of communication is to synchronize the domain of the entity ID between all systems. In other words, make sure that any system that must expose its components via its public API has a way to look up a component by some ID that always happens to be the entity ID.
user4704
So, if the visualizer needs to recover the position information from the physics system so it can draw a sprite, it can do something like:
user4704
body * b = physicsWorld->get_rigid_body(sprite->entityId);
user4704
To do this, of course, your visualizer must have access to the physics system, so you'd want to something like: Visualizer(PhysicsWorld * physicsWorld) as the constructor of your visualizer.
01:33
Allright, so then the communication is explicit.
user4704
(personally I prefer to avoid that specific dependency since it means I can't draw things without physics and I don't always want them; I keep physics and render position distinct, and have a higher-level system -- usually the 'game' class itself -- manage the synchronization, effectively)
user4704
but that is neither here nor there
Thanks very much for the explanation btw.
user4704
np
I hadn't realised there were so many different ways of doing it tbh
user4704
01:37
There's a lot more than that, too, depending on how particular you want to get.
user4704
But the major division is "components in entity," or "components in system."
user4704
After that its just flavor
Anyways, thanks very much for your help. I'm going back to frankencoding :P.
01:56
Evening govnas
 
3 hours later…
04:55
HELLO
Pleas help me on this Question
1
Q: Display and Hide CCSprite with Genie effect

iPatelI am new at cocos2D. I started to learn cocos2D with simple game from http://www.raywenderlich.com/tutorials#cocos2d tutorial. Now I'm crazy with animation, so now i want to display CCSprite as OSX style genie effect and also want to hide too. I dont know how can i do it. (I want to animation ...

 
2 hours later…
06:28
anyone have any ideas on how i could get a sword swing to look good in a 2d rpg
 
2 hours later…
08:16
Morning GameDevs
hey
using UnityEngine;
using System.Collections;

public class Rotation : MonoBehaviour {

// Use this for initialization
void Start () {

}

// Update is called once per frame

void Update () {

// ... at the same time as spinning relative to the global
// Y axis at the same speed.
transform.Rotate(Vector3.up *12 * Time.deltaTime, Space.World);
}
}
Am I stupid or something, I am trying to make an object rotate counter clockwise
when i post (- 12) it doesn't work
;..;
it rotates in around another axis
@Blue any ideas?
Try Local rotate
Plus you are missing a variable I thin
think*
@MikolajMarcisz which axis does it need to rotate around?
And is this a consistant rotation or something controlled?
constant, it works fine with this code I posted
cant figure out a way to do it the opposite way :/
08:29
Just not in the opposite direction, the reason being you are using a Vector.Up as a reference point for its rotation overall instead of handling the rotation on each axis.
My logic fails here, what should I do xD?
If it is around its OWN Y axis then use this:

function Update() {
float fltRotate = -12.0f;
transform.Rotate(0, fltRotate * Time.deltaTime, 0);
}
That will Rotate it locally on its Y axis not on the global Y axis.
08:32
No problem, let me know how it goes.
I can post a vid :P
Did not work again
function Update() {
    float fltRotate = -12.0f;
    transform.Rotate(0, transform.rotation.y + (fltRotate * Time.deltaTime), 0);
}
alterntively using eular angles, try it without Space.World
function Update() {
    float fltRotate = -12.0f;
    transform.Rotate(Vector3.up * (fltRotate * Time.deltaTime));
}
Your original query was fine I think but try it without Space as a refpoint
(Trying to debug this at work without a Unity build at hand is annoying :P)
it is not working ;/
with or without
I am trying to go for 1/var to change its direction
it changed the direction! but in the wrong axis
Then Vector.Up is not the axis you want.
Or don't forget this is local rotation
using UnityEngine;
using System.Collections;

public class Rotation : MonoBehaviour {
private int speed;
// Use this for initialization
void Start () {

}

// Update is called once per frame

void Update () {

speed = -12;
// ... at the same time as spinning relative to the global
// Y axis at the same speed.
transform.Rotate(Vector3.up * speed * Time.deltaTime, Space.World);
}
}
lol
this one worked
08:44
So why on earth didn't it work before..
btw, you only need to set speed once - if you don't default it to -12 when you intialise it then just put speed = -12; in Start()
Otherwise you are blindly reassigning speed with a value when it's the same.
maybe something was wrong with the class
Those things make you upset ;..;
Bizarre, both your old and new statements compile just fine...
Let me see how it goes later on @MikolajMarcisz - I'm intrigued.
I got it working : D
@Blue I can make a video of my scene, working with particles to get a cooler effect
09:14
Sounds good.
09:33
@Blue
Neventale.com/random/sphere.wmv - something like that : d need to add a skydome and some characters
09:46
Looks good.
I'm currently working on a turret defense game to get used to GameDevelopment. Want to branch out into it properly.
:P
I am currently making a mock-up video of my MMO : d
MMO huh? First Unity3D project?
Actually, I am doing it in HeroEngine, scene assembly is more time consuming in HeroEngine, asset exporting is VERY time consuming, one 3d mesh with texture = 3 minutes, I would have to export around 900 meshes
What moved you to use Unity?
I am going to present my game concept on a contest - I need a fast trailer, I could do it in both systems but it would take me 2x more time
09:57
Gotcha
:)
it would be hard to distinquish the one from unity and the HE one
Hopefully it is worth the time.
the only difference is, that I would be able to make an alpha release for people to play
Alpha - FIND ME THE BUGS
I got 8 days to finish it : D
more off

Alpha - That is what I got so far, gimme money through kickstarter to let you search for bugs in beta :P
10:08
@Bill!
Touché.
 
1 hour later…
11:26
Make me famous people...
0
A: Why do games seemingly reload the entire level when restarting a level?

BlueWell now - what an interesting question to tackle. When reloading a level there are so many factors that need to be taken into account that it the answer can go both ways. If your level state contains a large list of assets it can be more practical to start from a clean slate when reloading a l...

@William'MindWorX'Mariager - I am depending on you!
You too @MikolajMarcisz!
11:41
@Blue
hi
please help me at
0
Q: Why my BackGroung Image is hide when change grid with CCWaves Action?

iPatelI am use CCWaves action with CCSprite for get required animation My code of animation is id wavesAction = [CCWaves actionWithDuration:1.20 size:ccg(2,2) waves:1 amplitude:60 horizontal:YES vertical:NO]; [self.banana runAction: [CCEaseInOut actionWithAction:[CCRepeat actionWithAction:wavesActi...

@iPatel, I'll have a look when I can.
@Blue it's not that interesting to get famous for!
12:41
@Gajoo How dare you devalue my efforts! :D
@Blue meh...
@iPatel - Just took a look at your question and I don't know much about xna so I can't really help you there. Some basics to check for are the drawing buffer when you change the grid to your CCWaves Action, make sure the objects being drawn are passed to your draw/graphics buffer to be drawn on screen. Debug it from there and you may find your answer.
eval is evil.
@Almo Elaborate.
12:57
@Gajoo Because I want to learn it :-) And also, because I want to remove as much overhead as possible since its Javascript
I might use some physics library later on when I have implemented webworkers and octtrees. Far in the future
How is cocos2d related to XNA? :s
Doesn't look like C# to me. :P
@OliverSchöning <FunnyScottishAccent>Pft, make your own Physics noob. If I don't see M-Theory grade quantum mechanics controlling your app then you're doing it wrong</FunnyScottishAccent>
In Javascript, Eval will spawn a JS interpreter, and execute the code in a string.
it causes performance issues and leads to unmaintainable code
And think I remember Crockford saying there's nothing you can do with it that you can't do better with more maintainable methods.
@Blue Hehe :) How would I control the Quantum Mechanics though.. it would fuck up everythine Id try and look find their position and movement part
Never used Eval I think
@Almo Eval uses the same interpreter and runs just as fast as regulat JS. Anyways its great for loading JSON and besides maintainability there is no downside to it really.
Now the maintainability alone is kinda a huge issue so that alone kinda makes it not worth using.
13:10
Crockford says " The eval function is the most misused feature of JavaScript. Avoid it.

eval has aliases. Do not use the Function constructor. Do not pass strings to setTimeout or setInterval. "
I'll see if I can find his justifications
I agree you shouldnt use it 99% of the time. But its not because eval is evil as everyone likes to tote its because eval is exclusivly for generating dynamic code. If you dont need dynamic code then don't eval.

Just saying the usual sited issues like performance and security which are non issues are not why it shouldn't be used.
Pleas friend , help me at this Question
JSON.Stringify should be used for reading JSON apparently
1
Q: Display and Hide CCSprite with Genie effect

iPatelI am new at cocos2D. I started to learn cocos2D with simple game from http://www.raywenderlich.com/tutorials#cocos2d tutorial. Now I'm crazy with animation, so now i want to display CCSprite as OSX style genie effect and also want to hide too. I dont know how can i do it. (I want to animation ...

13:14
JSON.Stringify check for a valid string then calls eval
Microsoft says "Running Code Using the ‘eval’ Statement is Expensive

The title explains it all. The eval statement in JScript is both expensive in terms of performance and prone to error if the site is generating dynamically the script to be run."
they also say:
For those interested in the “why”, execution of an arbitrary string of script involves the construction of a new script runtime, copying the context of the currently executing script, manipulation of the runtime stack, and a bit of other work. This isn’t much different from running other code, but isn’t nearly as fast as writing the inline branching code to handle all of the possibilities of the dynamically generated code. There are obviously good uses for the eval statement, just examine your project thoroughly before taking a dependency on it.
ANyway, just looking around briefly and my own experience with it, avoiding it does seem smart, unless there's a really compelling specific case you need it for
Hmm that might just be IE. I know WebKit will and I belive Gecko will buffer the code (so no new runtime) and optimize it based on the string in the eval. But yeah if your not generating cody dynamically then dont use it.
isnt js basically all eval code? by its very nature js is not a pre compiled language
There is a ton of prediction and optimization of JS code it isnt just fed into the interpreter as is.
sort of like .net jit compiling ?
13:21
Pretty much
So i'm guessing the assumption is that because the string can be altered at runtime this is not likely to be possible as the actual code isn't known until runtime?
welp, got libgdx set up for my game last night
Ran the example, and lo and behold, it worked.
Depends generated code often doesnt change after its first generated if so you can cache that and its as fast as regular JS from then on.
@ShotgunNinja - good to know!
So JIT like optimizations based on measuring whats being run how often work on evaled code that doesn't change.
13:27
What was wrong before?
JIT alters programs while in execution optimizing based upon usage trends.
Yeah, even though I don't have Android build stuff set up on my PC, or GWT stuff, so the projects for 'Droid and HTML are broken.
Right now I'm just focusing on the Desktop portion.
Grand
Next step, tutorials on game architecture, camera movement, collision, etc.
First thing I want to build is a sample level.
One room, with a few walls, and a player who can move around.
hey shotgun ... fancy pulling something on massive environments
or server comms
i've noticed the basics now "how to render stuff" and "how to use concept X" are documented like everwhere
needs more docs out there on how to combine concepts
stuff like "now you have a world and 20 players this is how you hook them up to each other and keep changes in sync"
effectively "editing everyone's world at the same time" and stuff like that
13:36
Wasn't there an article on synchronizing MMO settings on Gaffer On Games?
btw, that's a really good resource.
13:52
@ToddersLegrande!
Do your job @Todders!
11
A: Why do games seemingly reload the entire level when restarting a level?

BlueWell now - what a simple but interesting question to tackle. When reloading a level there are so many factors that need to be taken into account that the answer can go many ways. If your level state contains a large list of assets it can be more practical to start from a clean slate when reload...

I didn't finish reading it yet xD
I vote we just use all the RAMs and have:

LoadLevel()
{
    //Load the level first then do the below
    startingLevelState = currentLevelState
}

RestartLevel()
{
    currentLevelState = startingLevelState;
}
Everyone has 32GB of RAM nowadays right?
not me
4
Yeah I have 8 :P
Work PC with 16
64GB ftw.
E-penis grows
14:07
Whats eww about 64GB?
;)
Oh you... :P
I also got 4GB
pc just crashed due to lack of memory...
HAHA the chances!
flips coin I make my own luck.
I just tried to have these applications open at same time:
chrome (5 tabs), FF(9gag + FB), visual studio, the game I'm working on, paint.net, photoshop, and few instances of other lesser applications :|
14:18
I think "the game I'm working on" may be the culprit :P
What do people this of this "revised" question?
-3
Q: Is there a maximum number of characters a design should have?

Carter81I need to identify a maximum number of characters in a game so that I can provide a high number of choices without overwhelming the player. Is there an optimum set of characters to use in this case? Every set I come up with is either overwhelming for players or have too few choices.

I reopened it since I was the only one that voted to close it before. But people should feel free to vote on it if they think it's still close-worthy.
@Byte56 when I first read that I was trying to figure out why anyone would put a max limit on the number of characters (alpha/numeric) that are in a game
Yeah. He claims is exactly the same as the optimal colors question. Which had a limit of 10 and represents a single variable.
Or a design document... or code... or something
where's the flag for "Q&A needs questions with definitive answers
14:21
"Primarily opinion based"
@ToddersLegrande it really is not, it only takes a few dozen megabytes
You closed it reopened it then answered it? Weren't you complaining about people answering questions they were voting to close?
That would be "Too broad" or primarily opinion based.
where is that option?
can't find it
@Almo needs more rep :P
It's a close vote option
14:22
@ClassicThunder I voted to close a different question, it's been significantly edited
And, I have no problem with voting to close and answering a question.
that time it was tehre
it's like the interface changed
I do that occasionally to try to steer the other answers to be on topic, incase the question wasn't closed.
@ToddersLegrande Bioshock Infinite says otherwise.
Hey @Byte56 - Nice blue name you've got there.
I want to get a new graphics card before I finish that game. Not playing it at full HD right now :(
14:24
It's amazing...
I've never felt so much emotion from a games story and ending.
Yeah, seems inappropriate, with my name not being "Blue"
;P - you got what I was going for!
You should have been a mod. Epic chat combination.
I was going to apply, pity I was in hospital when it opened
@ToddersLegrande any suggestions for an online radio channel? playing music? for wp8?
14:25
"Uh oh, Blue incoming!" would have a whole new meaning
If you change the title to "Methodologies for deciding the number of characters a design should have?" wouldn't that work?
Digitally Imported
@ToddersLegrande There is still next year ;)
they have a bunch of channels organized by type of music
Soma.fm
that's another good one
@Blue You were in the hospital for a week?!
14:25
There should be a way to make a review require a peer review even if you have edit abilities I think with a bit or rewrite its a good question.
@Gajoo I use the Xbox music service which also has a "smart DJ" option which kind of acts like a radio. It just generates a playlist based on the selected artist/song. I think its like $10 a month and likely not an option for you
The other obvious answer is Pandora
@ToddersLegrande pandora isn't really an option either, considering it's filtered
Pandora is ad free through the end of the year on WP8
Oh bummer
@ClassicThunder Edits from low rep users do require a review.
@ToddersLegrande at least the PC client is :|
14:28
@ClassicThunder Well, now I have to modify my answer slightly :p
@Gajoo that would mean it would be on the phone if you are using Wifi for sure, not sure about cellular data
Unfortunately I haven't explored any other options. Sorry!
@Byte56 lol I figured that makes it answerable and should be helpful to the op still. I just don't really like the idea of kind of hijacking a question like that.
I really like the edit
@ClassicThunder That's what editing is all about. If you can turn it around, then go for it.
It can always be undone or tweaked if it's not a good edit.
@ToddersLegrande seems windows phone version is not filtered, but it's not available in my region :|
14:30
I think it's a good edit.
@Gajoo oh snap
I ninja edited my answer to fit.
it's like other things, everything worth exploring is either filtered by our government or blocked by service providers :|
what about soma.fm?
This website is worthless if people can't give their thoughts (answers) to discussions about game design. This is suppose to be about Game Development, which includes Design Philosophy. Game Design is extremely important. What a worthless website... this site should be deleted entirely and simply move the questions over to StackOverflow if we can't ask questions about game design theory and are limited to very specific questions or specific programming problems. Game design theory will always be opinion oriented.. and most of the answers for other questions are 100% opinion...what a joke, lol. — Carter81 8 hours ago
O_O OH SNAP
14:42
But the how many characters question is completely speculation
To be fair, there may be a simple formula based on empirical research which shows which colors are optimal, as well as how many characters are optimal. The problem is that these also depend on the game type, and many other details about the game.
These aren't really things that can be answered definitively for all games, which is where the "discussion-oriented" part comes in.
@Almo wp8 doesn't seem to have a decent client, or the service sucks :|
15:07
for sure
 
1 hour later…
16:21
@Byte56 Yes. Yes I was.
@Blue how many organs are you missing? I'm up to two now
@ToddersLegrande Well if you count a blind eye as an organ then the one.
@Blue now you will never be able to view 3D content :(
@ToddersLegrande I know man. I miss seeing my girlfriends boobs with depth...
Such a trajesty
16:25
@ToddersLegrande tragedy, or travesty? Also, where'd the J come from?
He's being all urban dictionary on our arses.
The "proper" spelling is probably "tragesty"
Either way, neither. I'm going to use made up words all I want and there is nothing you can do about :P
Not unless they mean something other than your own purpose for the meaning...
Right - home time
Anybody want a peanut?
The rhyming scene might be my favorite...
I'm done with the misc log thingy
or with timestamps
16:44
@AlexM. reminds me of RuneScape for some reason :P
might be
I'm unconsciously putting in elements from other games
17:15
ewwwww.... We just got XSS'd
A JSP file was maliciously inserted into our web site.
:(
bad results?
17:37
Not sure.
Ew. JSP :P
Dude, totally. I hate working with this crap.
Especially when some of our more complex pages are thousands of lines long, and contain run-on tags which are broken up across 10 or more lines.
oh gawd
So these are self contained JSPs with no code behind or? (I forget the exact terminology, only took a class and hated it)
They have code-behind. It's just that they represent things like product search/display pages, and so many little extra features have been added over the years without code cleanup that it's grown disgusting.
17:53
Well like with ASP.NET it gets split out into ASPX files and .CS files if you do it right - nothing forcing you to do it this way. At least then with the .CS files I could use the built in IDE functionality to find the code I'm looking for very easily and not have to sift through markup at the same time
If you've got both types of files AND its still that bad... I'm sorry :(
00:00 - 18:0018:00 - 00:00

« first day (1078 days earlier)      last day (4238 days later) »