Ok

En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Ces derniers assurent le bon fonctionnement de nos services. En savoir plus.

22/02/2007

Procedural Cities...

Apres les villes, Introversion s’attaque aux bâtiments…

 

 

The other major disadvantage is the amount of time it can take to dynamically generate content. For example, it might only take a fraction of a second to generate a single building in a city, but once you are generating an entire city with hundreds of buildings, as well as road systems, it adds up to some fairly noticeable load times.

 

This problem is especially evident with the aforementioned .kkrieger – there is a fairly long loading time at the start of the game while all of the content for its level is generated. This also means that a more powerful computer is required to run the game than if the data had been pre-made and stored normally.

 

Despite this, procedural content generation is a vital tool for small developers, and, some might argue, the future of the industry itself. With development costs spiralling out of control, publishers are becoming more and more reluctant to risk money by trying new things, preferring to stick with tried and tested methods, instead of creating original games.

 

By using procedural generation methods to drive down costs, developers could gain more freedom to test new ideas, and indeed, without procedural generation, small companies like Introversion probably wouldn’t even exist

  

[ Game Carreer Guide ]

13:05 Publié dans Code | Lien permanent | Commentaires (0)

15/02/2007

La vulnérabilité du Printf

 

Although not as well known as other vulnerability types such as buffer overflows, format string vulnerabilities have been known to exist in C and C++ programs since at least 1999, when a format string vulnerability was found in AnswerBook2 (cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-1417).

 

Formatted output became a major focus of the security community in June 2000, when a format string vulnerability was discovered in the Washington University ftpd (WU-FTPD) software package (www.kb.cert.org/vuls/id/29823).

 

 
But format string vulnerabilities are not limited to programs written in C and C++. Other languages that include format strings include Perl, PHP, Java, Python, and Ruby. While these languages are relatively immune from buffer overflows because they maintain dynamic arrays and strings for programmers, programs written in them may still contain format string vulnerabilities.
 

 

[ Embedded

13:00 Publié dans Code | Lien permanent | Commentaires (0)

11/02/2007

LOL !!!

medium_random_number.png
 
[ xkcd

19:10 Publié dans Code | Lien permanent | Commentaires (0)

09/02/2007

Capcom MT framework

Allez, pour les retardataires, Capcom a fait une présentation très impressionnante du moteur de Dead Rising et de Lost Planet. C’est un framework très très impressionnant qui tient largement la route face a Unreal et qui tire parti d’Havok!

 

medium_Resize_of_3dlp03.jpg

 

medium_Resize_of_3dlp31.jpg
medium_Resize_of_3dlp44.jpg
medium_Resize_of_3dlp45.jpg
 
 

13:00 Publié dans Code | Lien permanent | Commentaires (0)

04/02/2007

Petit guide au C# a l’usage des programmeurs C et C++…

Enfin, petit, c’est vite dit, puisque ce livre fait 267 pages quand même. Enfin, .Net et C# ont la cote ces derniers temps, et les choses vraiment gratuites sont si rares de nos jours…

 

C# is a modern type-safe and object-oriented programming language based on the syntax of C and (to a certain extent) C++ and Java.
 

Even if you‘re an experienced C++ programmer, you might be in for a few sur-prises. You may think you know the difference between a class and a struct, for example, but the difference between a class and a struct in C# is completely different from C++.

 
(That difference is actually one of the lamest features of C++ and one of the most profound features of C#.) For that reason and others, I approach object-oriented programming con-cepts in this book almost as if you‘re learning about them for the very first time.

 

[ Charles Petzold ]

13:00 Publié dans Code | Lien permanent | Commentaires (6)

19/01/2007

Nvidia CUDA...

Ou comment programmer son GPU directement en C...

 

GPU computing with CUDA technology is an innovative combination of computing features in next generation NVIDIA GPUs that are accessed through a standard ‘C’ language. 

 

Where previous generation GPUs were based on “streaming shader programs”, CUDA programmers use ‘C’ to create programs called threads that are similar to multi-threading programs on traditional CPUs. 

 
In contrast to multi-core CPUs, where only a few threads execute at the same time, NVIDIA GPUs featuring CUDA technology process thousands of threads simultaneously enabling a higher capacity of information flow.

 
One of the most important innovations offered by CUDA technology is the ability for threads on NVIDIA GPUs to cooperate when solving a problem.  By enabling threads to communicate, CUDA technology allows applications to operate more efficiently. 

 

NVIDIA GPUs featuring CUDA technology have a Parallel Data Cache that saves frequently used information directly on the GPU.  Storing information on the GPU allows computing threads to instantly share information rather than wait for data from much slower, off-chip DRAMs.  This advance in technology enables users to find the answers to complex computational problems in real-time.

 

[ NVIDIA

 

13:00 Publié dans Code | Lien permanent | Commentaires (2)

17/01/2007

Procedural cities...

 

La génération procédurale a la cote, et entre les mains d'Introversion, ça va être terrible !

 

Alternatively, I could write a few hundred lines of code and generate the entire mountain and hills procedurally, using fairly easy to understand mathematics.

 

I can control the amount of detail I am generating – more detail doesn’t cost any more to produce than less detail. As the years roll by and the standards rise, CPU power increases and higher and higher detail landscapes can be generated with exactly the same algorithms.

 

Mountains and hills are good examples, because most landscape follows simple mathematical rules and can be easily approximated, but in reality most things can be modelled using algorithms – trees, streets, cities, planets, star systems.

 

Darwinia made extensive use of procedurally generated landscapes – we designed the landscapes at an extremely high level (eg Mountain here, Flat land here, Water there) and the algorithms did the rest.

 [ Introversion ]

 

13:10 Publié dans Code | Lien permanent | Commentaires (3)

15/01/2007

DMA : Direct Memory Access

C’est bien beau d’avoir des processeurs avec N cœur de calcul capables de coller la honte à un Cray, encore faut-il pouvoir le nourrir en données sans impacter les performances. C’est le propos des accés DMA, au cœur de la performance des processeurs pour console.

 

An embedded processor core is capable of doing multiple operations in a single cycle, including calculations, data fetches, data stores and pointer increments/decrements. In addition, the core can orchestrate data transfer between internal and external memory spaces by moving data into and out of the register file.

 

All this sounds great, but in reality, you can only achieve optimum performance in your application if data can move around without constantly bothering the core to perform the transfers.

 

This is where a direct memory access (DMA) controller comes into play. Processors need DMA capability to relieve the core from these transfers between internal/external memory and peripherals, or between memory spaces (Memory DMA, or "MemDMA").

 

[ Embedded.Com

 

12:50 Publié dans Code | Lien permanent | Commentaires (2)

07/01/2007

Variational Methods for Bayesian Independent Component Analysis

Data and information are, respectively, the resource and commodity of the modern world. Data is extracted from the world like crude oil from a reservoir - in its rawest form, data is of little use.

 

It is only when information is extracted via processing - like petroleum from oil - that data becomes `meaningful'. The discovery, analysis and recognition of patterns is of paramount importance if information is to be extracted from the raw observations on the world.

 

This is something that comes naturally to humans. The human brain is a pattern recogniser par excellance and, as such, mathematical pattern recognition forms the foundation of `intelligent' data processing by computers.

 

The mathematical study of patterns is rapidly becoming an area of huge significance, particularly as the world becomes increasingly data-driven and information-hungry. New novel and anthropogenic methods will be needed to interrogate, process, organise, store, access and understand this data quickly and intuitively.

 

[ Variational Methods for Bayesian Independent Component Analysis

13:10 Publié dans Code | Lien permanent | Commentaires (0)

23/12/2006

Embedded MultiThread

Programmer sur console, c’est faire de la programmation embarquée. Embedded.com a fait une liste des articles sur la programmation parallèle, les processeurs multicores et autres DSP dédiés. Pratique, non ?

 

*Development and Optimization Techniques for Multicore Processors
*Leveraging multi-core processors with graphical system design tools
*Needed-clear thinking about multithreading and multi-core
*Programming heterogeneous multiprocessors
*When GHz don't add up
*Programming the Cell Broadband Engine
*A glimpse inside the Cell processor
* Taming the Hydra
*Tackling memory allocation in multicore and multithreaded applications
*21st century multiprocessor design: Part 1
*Tutorial:How to analyze your multiprocessing options Part 2 - Best Practice
*Tutorial:How to analyze your multiprocessing options " Part 1
*Multithreaded Programming Quickstart
*Software performance considerations when using cache
*Advanced Processor Features and Why You Should Care Part 2
*Designing with an embedded soft-core processor
*Advanced Processor Features and Why You Should Care Part 1
*Making the Most of Multi-Core Processors Part 2
*Debugging real-time multiprocessor systems Part 1
*Common programming models for use on a dual-core processor
*Software Design Issues for Multi-core/Multiprocessor Systems
*Making the Most of Multi-Core Processors: Part 1
*Debugging real-time multiprocessor systems: Part 2
*Debugging real-time multiprocessor systems: Part 1
* Common programming models for use on a dual-core processor
*Applying distributed system concepts to embedded multiprocessor designs Part 3
*Putting Multicore Processing in Context Part 2
*Simulating and debugging multicore behavior
*Applying distributed system concepts to embedded multiprocessor designs: Part 2
*Applying distributed system concepts to embedded multiprocessor designs: Part 1

And so on... 

 

13:35 Publié dans Code | Lien permanent | Commentaires (0)

16/12/2006

Introduction to Altivec

L’approche SIMD (Single Instruction Multiple Data) est aujourd’hui quasiment incontournable pour atteindre des performances raisonnables. Sur PC, SSE (Streaming SSE Extensions) règne en maître. Sur Mac et sur le PPU du CELL, c’est Altivec qui donne le tempo.

 

medium_figure6.gif

Et ce sans parler des véritables processeurs dédiés, comme les SPU du CELL, ou les VU (Vector Unit) sur PS2, ou encore (dans un sens encore plus spécifique) les différents GPU (Graphics Processing Unit).

 

 

 

Pour s’y mettre un peu, Freescale (le spin off de Motorola) propose un exposé présentant de façon sympathique l’art d’utiliser au mieux Altivec. L’exposé date un peu, et Altivec a évolué depuis, mais les grands principes sont toujours valides.

13:15 Publié dans Code | Lien permanent | Commentaires (0)

14/12/2006

Optimised Fast Square Root

Lisez ce code:

medium_InvSqrt.png

Si vous le comprenez du premier coup, de deux choses l’une : soit vous êtes un vétéran en programmation embarquée, soit vous êtes un génie. Ou plus probablement, vous vous trompez.

 

Moi, j’ai croisé ce code pour la première fois à la fac. C’est ce jour là que j’ai réalisé le GOUFFRE entre ce que j’apprenais le jour, et le niveau que je voulais atteindre pour devenir programmeur de jeu.

 

Depuis, j’ai appris à connaître les normes de représentations numériques des chiffres réels (comme IEEE 754), a manipuler les nombres réels en arithmétique à point fixe (Fixed Point Arithmetic), et a redécouvrir les vertus d’outils mathématiques comme les séries de Taylor et autres joyeusetés de Newton.

 

Et si vous êtes impatient, voici l’explication exacte de cette méthode.

 

Beyond3D revient sur l’historique de cette implémentation, en partant de Carmack et en passant de 3DFX à Silicon Graphics.

 

De quoi apprendre à être humble, non ?

19:20 Publié dans Code | Lien permanent | Commentaires (0)