Regarding commercial games using Python, what I meant was that the codebase would not be done in Python. I'm sure many games use Python as their scripting language, just as they would Lua.
That said, I'm aware that you can actually make entire games out of Python. I've just never seen a commercial one that did so. I'd be intrigued if there were.
Quote:
Originally Posted by Sprelf
Hey Brian. I'm going to be getting my Associate's Degree in Computer Languages after this upcoming spring semester. The degree is more of a formality, as I am 22 and have been programming since I was 16. Would this generally be sufficient if I were able to demonstrate my proficiency? Or would you recommend going through to a full Bachelor's?
|
Your objective should be to get an interview--if you know your stuff, the interview process will be an awesome way to show your proficiency. What you need is a way to sell yourself so that you get the interview.
In general, having completed (or showable) projects is really, really good. If they're games, they're even better. It also gives you something to talk about during your interview.
Quote:
Originally Posted by AtlaStar
Well the structure is pretty simple, and I definitely see what you are saying about where it would have strengths vs weaknesses.
It's strength would probably be best used in something like a very large data structure that needs sorted data, but a quick way to access the data since it's search has a O(log n) efficiency
What's bad about it is that it does add complexity to the program if it isn't balanced, making it to where you might not be getting an efficiency gain over std::vector, or very little gain
And it would be worst used in my opinion for graphics, just because loading each vector to create your polygons would require just as many recursions as a linear node based structure
More or less I made the structure with the idea that I could use it to parse code in another file, for something like say a level for a game that is going to change, so that I could free up space in ram and not have to load all the resources until I needed them, but I am very aware that it is best used with very large amounts of data and only better suited when you need to rapidly search through that data to use it somewhere else in the code...and if I'm mistaken feel free to correct me lol, because I do wish to become a better programmer...and btw I like the back end stuff, not so much into graphics or anything like that...if that makes sense
|
So, in school, you're generally taught about time and space complexity of algorithms, but those are not the only aspects that determine a data structure's or algorithm's runtime speed. Another huge part of those determinations is
Locality of Reference. That is to say, contiguous data is best data.
So the "classic" definition of a binary tree involves something like this:
struct Node
{
MyData data;
Node * left;
Node * right;
};
And whenever you need a new child, you do something like:
node->left = new Node;
But, barring overloading operator new(), these allocations are fragmenting your data. If you're traversing through a tree, you may repeatedly cache miss as you go from child to child, heavily impacting your runtime.
One alternative is to use an array to hold your binary tree. The parent is index 0, and the children of any index follow this pattern:
left = 2n + 1
right = 2n + 2
As a natural consequence of this, a breadth-first search is just an iteration from beginning to end of the entire array. That's pretty neat.
But do you want to do that? Well, what are we using this tree for? Is it used a lot, or a little? Is it a heap? Is it being used for breadth-first or depth-first searches? Are things being removed from it constantly?
The algorithms are extremely important, but so are the underlying data structures. In some situations, you may want to resize this "array-based binary tree" just like a vector would when it hits its cap. But if "MyData" is large, maybe that's to large a cost. Maybe instead we implement blocks of memory like a deque, so that we never have to move things and we still get lots of locality of reference. But if we're doing depth-first searches, we could be jumping blocks all the time, which is bad...
My lesson to you is this: programming is about using the right tool for the job, but the reason it's so hard is that there's a lot of stuff to consider. :P
(Also you can pretty much always use vector because locality of reference is
that powerful.)
Quote:
Originally Posted by Zarozz
How much exposure to the Java dev's at riot having to the gaming side of development at riot?
I'm currently doing a year of industry based learning for Uni ( my 3rd year out of 4). and would love to work at riot one day.
I work with JEE, spring, hibernate, maven, jenkins, mercurial, jquery. Using Rad and Websphere.
Are these technologies used within Riot?
|
Hmm...
We use Jenkins and Maven for our build processes, but I'm not sure about the rest. I actually know very little about our Java codebase and utilities. Soz, yo. :[