Jump to content

Introductions


Recommended Posts

Hi, I am a 4th year student from University of Waterloo. I am very interested in AOE 2, which is how I found out about this open source project.

I have modded AOE2 to be able to build more than 200 population, increased the resources, and improved the balancing of the game. In addition, I created some new units such as flamethrowers, flame towers and grenadiers (I generally take my ideas from AOE 3). In the future, I hope to make a Age of Wonders mod where each civilization's wonders actually does something useful, for example, Persia's Wonder will be able to build siege elephants, and korea's wonder will be a super defensive tower.

Anyways, enough about AOE 2. I am here now and want to contribute to 0 A.D. I noticed there are a lot of development lately, and I find the development process to be really straightforward and clean (like how every software company should be, but it's not the case at all in the industry, I know that from my 6 co-op terms in various companies). In addition, I took a look of the code base, and it's really well documented and commented. In conclusion, this project is the definition of a perfect example of how software development should be, and I approve of this project 100%.

However, I do not have much time to contribute to this project due to University courses and co-op terms. But now I am taking a course called Programming for performance, and we have a cool profiling assignment to do.

Basically, my partner and I are going to examine the performance of the game in some aspect (memory usage, speed of the game, network performance, etc.) with some profiling tool, and we are going to improve it for some % (measuring using the same profiling tool). This should be a great opportunity to do some good here.

The bottom line:

- My partner and I are looking for an area to improve the game (AI, path finding, memory usage, game performance, etc.)

- We will improve it by some %, it will be documented

- Time frame is about 2 weeks (development cycle ends beginning Feb.)

- We are really good software engineers with industrial experience, and we will get the results (we will do well in our assignment, of course)

I know how to use the issue tracking system, but can someone point us to the right place for a project that best fits our situation? (perhaps you guys would know something the issue tracking system doesn't)

Link to comment
Share on other sites

Hey guys, welcome to the community! Interesting offer, but I'm sure a programmer could better point you to the ideal area to direct your focus to. In the mean time, I would recommend spending some time familiarizing yourself with the source code (although I assume you've already done this to some extent).

[...] and korea's wonder will be a super defensive tower.

We don't actually have Korea as a faction (unless of course you have plans to add them into the game). :)

Link to comment
Share on other sites

My partner and I are looking for an area to improve the game (AI, path finding, memory usage, game performance, etc.)
I think the most useful thing for us would be improvements to known bottlenecks in the simulation code. From a rough profile graph (generated via source/tools/replayprofile/) the biggest spikes are usually caused by "ComputeShortPath" (which includes "A*"), in source/simulation2/components/CCmpPathfinder_Vertex.cpp. There's some other bits like "LosUpdateHelper" (CCmpRangeManager.cpp) and "Move" (CCmpUnitMotion.cpp, which includes LosUpdateHelper but also spends time in things like cmpPathfinder->CheckMovement, I think) which take up a noticeable portion of runtime. I've done a bit of work optimising those things, so hopefully the baseline performance shouldn't be terrible, but there should be plenty of room for improvement (both algorithmic and lower-level) with a bit more work :)

It's fairly straightforward to get repeatable real-world-ish performance measurements - play the game for a while (preferably on a complex map with lots of units in close proximity, since we want to optimise the worst-case situation), then look in the logs directory for sim_log/$PID/commands.txt, then run the game with the argument -replay=path/to/commands.txt and it'll run the simulation code (via ps/Replay.cpp) without any graphics or timer delays or randomness, so you can attach a profiler and see what's happening.

(Incidentally, the current SVN version has severe performance problems because of unfinished AI work - hopefully that'll be fixed by February, but if not you might want to stick with the alpha 3 release of the code since that should have fewer silly issues.)

Link to comment
Share on other sites

Hey,

My name is Kieran. I'm the Open Source Development Manager. Thanks for your interest in the game.

I guess if you wanted to find the slowest part of the game, you could profile the map "Combat Demo (huge)". It has many units, and once they start fighting, not many computers will be able to keep up with it. Mine (4GB RAM, 1GB graphics) slows down from 40 FPS down to 1 FPS.

I haven't profiled it myself, but the slowness may be mostly due to the path finding & line of sight calculations (including enemy proximity detection).

If you want to have a go at optimizing the game in general, starting with the slowest things, that'd be very much appreciated.

Regards

Kieran

Link to comment
Share on other sites

That's an interesting idea, though that map's probably not great as a realistic workload - it hits unusual scalability problems due to the units being so tightly spaced (e.g. the engine tells each unit about each other unit that's within attack range, and in this case every unit is within range of several hundred other units, so it spends a lot of time just processing lists of unit IDs), which will rarely come up in normal games. Ideally those problems should get fixed anyway, but they're less important for us than problems that always occur. And a large part of the trick of profiling is making sure you're profiling the right thing, not something that's easy to measure but unrelated to real-world performance, so it's probably better from an educational assignment perspective to stick with less artificial maps :)

Link to comment
Share on other sites

Hi guys, thank you for the great suggestions. I just realized we didn't introduce our names. My name is Bryan and my partner's name (BobSaget78) is Scott. We are looking forward for this project, and we are going to work on it starting tomorrow (We just received our assignment instructions). We are most likely going to take the path-finding performance problem (Thanks for all the great pointers, we have a pretty good starting point now).

In addition, I have recommended this project / community to our professor, and many of our classmates seem very interested in working for this project / community. This is very good news indeed since our classmates are really talented in software engineering and have had real world experience too. Soon you should hear some new members asking where to start improving the code, just like I did. Please direct them to different tasks so that we don't work on the same thing. This way, our efforts will contribute the most.

Thank you guys in advance.

p.s. @Kimball: regarding the civilization Korea, I was talking about AOE 2, not 0 A.D. I don't plan to make a Korea faction for 0 A.D. yet. I feel that most developers here want to concentrate their efforts towards finishing the game first before making any additional mods or features. However, I would definitely would like to help out making a mod of 0 A.D. that's in the same time period as AOE 2 (i.e. 0 A.D. for AOE 2), this is for the future development, of course.

Link to comment
Share on other sites

I think the user profile is the only place the user is guaranteed to be able to write files (especially on Vista+ where users aren't admins), and Application Data is the placed intended for applications to store data in there :). (We ought to be storing things like screenshots in different locations where they're easier to find, though.)

Counting developers is hard - there's something like 30 people over the years who've written code that's in the game but some wrote a thousand times less code than others and there's only been a few people active at a time, so it depends on what you want to count, and I have no idea how many people have been involved with art and other activities.

Counting users is also tricky but the download stats report about 60K downloads, plus there's downloads before we started using SourceForge and also SVN and an unmeasurable-but-quite-large number of Linux package downloads. So it's probably something on the order of 100K downloads.

Link to comment
Share on other sites

But what about the game install folder? Surely you'd be able to write files there since you installed the game there.

How many people have joined the 0 A.D. Forum?

Thank you for the stats, this gives me a better sense of the developer activIty and user base, which is required for my assignment.

Link to comment
Share on other sites

If the game was installed as an admin (e.g. to C:\Program Files) then non-admin users wouldn't be able to write there, so for consistency we always assume the installation directory is read-only.

The forum index page says "We have 8,345 registered members", though a lot of them might be spammers.

Link to comment
Share on other sites

The forum index page says "We have 8,345 registered members", though a lot of them might be spammers.

(And a fairly big amount of them haven't been active for very long, surprisingly many have just registered and never posted. In either case it's not a reliable measurement for the userbase as many people have downloaded the game without registering. Of course the opposite is true as well, many are waiting for a more finished version before trying the game, quite a big amount of them are waiting for the AI before they try the game, so perhaps there will be a big increase in the number of active users after the AI is included.)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...