Spring RTS Internals

December 18, 2013 Leave a comment

Spring is a free open source RTS game engine originally created by Stefan Johansson and Robin Westberg, members of the Swedish Yankspankers game clan. Originally intended to bring the gameplay experience of Total Annihilation into three dimensions, the engine has since evolved to support a plethora of more modern and more flexible features, including built-in high-level extensibility through a Lua scripting interface.

Any developer who wants to contribute to Spring RTS or any other open source project needs to understand the existing code, and for that he can read the documentation, explore forums, read comments from code or read the code itself.
Read more…

Categories: Uncategorized

Motivations of choosing C over C++ : Git case study

October 21, 2012 4 comments

Linux, Php, and Git are a popular projects developed with C, in the other side OpenOffice, firefox, Clang, Photoshop are developed with C++, so it’s proven that each one is a good candidate to develop complex applications. Try to prove that a language is better than the other is not the good debate. However we can discuss motivations behind choosing one of them.

There are two major arguments quoted each time when we discuss choosing C:

- Best performance.
– Compiler support.
Read more…

Categories: CodeProject

Learn design patterns from real projects: RigsOfRods case study.

October 15, 2012 Leave a comment

The majority of developers have already heard about design patterns, GOF(Gang Of Four) patterns are the most popularized, and each developer has his way to learn them , we can enumerate:

  • Reading a book or a magazine.
  • From web sites.
  • From a collegue.
  • Doing a training.

Read more…

Categories: C++, CodeProject

Clang Rocks!

October 6, 2012 Leave a comment

Four years ago when we began the development of CppDepend we needed a C\C++ parser, our first reflex was to use GCC, in the beginning we were very excited to integrate it, but after few weeks we decide to abandon it for the following reasons:

  • Gcc is monolithic and it’s difficult to isolate only the front end parser.
  • Gcc doesnt treat microsoft extensions.
  • The GPL license is restrictive, and we can’t use it for our commercial product.

Read more…

Categories: C++, CodeProject, Design

The Architect: The succes key of the project.

October 1, 2012 Leave a comment


Sometimes there are some hidden correlation between two or more process developement steps, that could generates many unsuspected problems , In this article the goal is to discover the impact of the architect decisions  on the other actors involved in the project.  

Read more…

Categories: CodeProject

MemCache++: An example of modern C++ design

September 20, 2012 4 comments

MemCache++ is a light-weight, type-safe, simple to use and full-featured Memcache client.
It was developed by Dean Michael Berris who is a C++ fanatic, loves working on network libraries (cpp-netlib.github.com), and currently works at Google Australia. He also is part of the Google delegation to the ISO C++ Committee. You can read more of his published works at deanberris.github.com and his C++ blog at www.cplusplus-soup.com.

Studying the well designed libraries is recommended to master C++ concepts, and the goal of this article is to discover some memcache++ design choices that makes it easy to understand and use.
Read more…

Categories: CodeProject

Concurrency Runtime: Task Scheduler

September 14, 2010 1 comment

The Task Scheduler schedules and coordinates tasks at run time. A task is a unit of work that performs a specific job. The Task Scheduler manages the details that are related to efficiently scheduling tasks on computers that have multiple computing resources.

Windows OS provides a preemptive kernel-mode scheduler,it’s a round-robin, priority-based mechanism that gives every task exclusive access to a computing resource for a given time period, and then switches to another task.Although this mechanism provides fairness (every thread makes forward progress), it comes at some cost of efficiency.For example, many computation-intensive algorithms do not require fairness. Instead, it is important that related tasks finish in the least overall time. Cooperative scheduling enables an application to more efficiently schedule work.
Read more…

Categories: CodeProject

Get every new post delivered to your Inbox.