adonthell-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Adonthell-commits] CVS: doc/architecture .cvsignore,NONE,1.1 Makefile,


From: Kai Sterker <address@hidden>
Subject: [Adonthell-commits] CVS: doc/architecture .cvsignore,NONE,1.1 Makefile,NONE,1.1 abstract.tex,NONE,1.1 arch.fig,NONE,1.1 arch.pdf,NONE,1.1 architecture.tex,NONE,1.1 layers.fig,NONE,1.1 layers.pdf,NONE,1.1 overview.tex,NONE,1.1
Date: Wed, 01 Jan 2003 08:12:43 -0500

Update of /cvsroot/adonthell/doc/architecture
In directory subversions:/tmp/cvs-serv7020

Added Files:
        .cvsignore Makefile abstract.tex arch.fig arch.pdf 
        architecture.tex layers.fig layers.pdf overview.tex 
Log Message:
INITIAL import of adonthell architecture documentation


--- NEW FILE ---
*.aux
*.log
*.toc
*.pdf
*.tgz
*.out
*.ind
*.idx
*.ilg
*.zip
*.eps

--- NEW FILE ---
IMAGES = layers.pdf \
        arch.pdf
        
all: pdf

pdf: ${IMAGES} *.tex
        pdflatex architecture.tex

%.pdf: %.eps
        epstopdf $<

%.eps: %.ps
        ps2eps -f $<
        
%.ps: %.dot
        dot -Tps2 -o $*.ps $<

clean:
        rm -rf *.ps *.eps *.pdf

--- NEW FILE ---
\section{Abstract}

This document is a supplement to the Adonthell API documentation. It is 
intented for new programmers and everyone else interested into the general 
concepts and design of the Adonthell game engine.\\

It is not meant to be a complete reference, but it should give the reader a 
good overview of the codebase and ideas behind various implementation details.
It won't explain the code itself; that's what the API docs are meant for, but 
it might help to understand why certain things are the way they are.\\

In brief, this is a guide through the Adonthell source code. No more, no less. 

--- NEW FILE ---
#FIG 3.2
Landscape
Center
Metric
A4      
100.00
Single
-2
1200 2
0 32 #f7e7ae
0 33 #f7d3ae
0 34 #dfdbb6
0 35 #d7fbae
0 36 #fffbc7
2 1 1 1 0 35 51 0 20 4.000 0 0 7 0 0 5
         1125 1575 5175 1575 5175 2925 1125 2925 1125 1575
2 2 0 1 0 33 52 0 20 4.000 0 0 7 0 0 5
         1125 1125 5175 1125 5175 1800 1125 1800 1125 1125
2 2 0 1 0 32 50 0 20 0.000 0 0 7 0 0 5
         1800 2025 4500 2025 4500 2475 1800 2475 1800 2025
4 0 0 50 0 0 12 0.0000 4 135 825 2790 2745 extensions\001
4 0 0 50 0 0 12 0.0000 4 180 900 2700 2295 Engine core\001
4 0 0 50 0 0 12 0.0000 4 135 450 2880 1845 Game\001
4 0 0 50 0 0 12 0.0000 4 135 705 2790 1395 Launcher\001

--- NEW FILE ---
%PDF-1.3
%Ç쏢
6 0 obj
<</Length 7 0 R/Filter /FlateDecode>>
stream
xœMOÃ0†ïþ>$LçóŠ4qáë
q˜º¬+R;µÁÏÇa…Ӑ¥8ïë'ö€Š4ªs®;àöÉb3¢X^¢    
address@hidden<ë0O:¢qN‹Ý''Æ1Ãþ,#7øqY½R´…”¢]HgŸäJ¥Ù"önÆ<#
Éâ‹|~÷Ï槭¤ü³ÌÒ'²’ûÅ/Q™ÈdÝ;Q.‹…‚
¨¿g{Nu‡w•LWŽZ³Ô¨öp¼‘£`
j&•äïU«üù–û©=öÓUõ
7Ž¼O*   ‰¸ª¬Ö}Óöë㘋æ\ø·ä~Ûåůÿ>>lßûúÇ"XWø%¾
endobj
7 0 obj
270
endobj
5 0 obj
<</Type/Page/MediaBox [0 0 257 116]
/Rotate 0/Parent 3 0 R
/Resources<</ProcSet[/PDF /Text]
/ExtGState 12 0 R
/Font 13 0 R
>>
/Contents 6 0 R
>>
endobj
3 0 obj
<< /Type /Pages /Kids [
5 0 R
] /Count 1
>>
endobj
1 0 obj
<</Type /Catalog /Pages 3 0 R
>>
endobj
4 0 obj
<</Type/ExtGState/Name/R4/TR/Identity/OPM 1/SM 0.02>>
endobj
9 0 obj
<</Type/FontDescriptor/FontName/WMIIGM+Times-Roman/FontBBox[-168 -281 1000 
924]/Flags 34
/Ascent 924
/CapHeight 676
/Descent -281
/ItalicAngle 0
/StemV 111
/MissingWidth 250
/XHeight 461
/CharSet(/space/E/G/L/a/c/e/g/h/i/m/n/o/r/s/t/u/x)
/FontFile3 8 0 R>>
endobj
8 0 obj
<</Subtype/Type1C/Filter/FlateDecode/Length 11 0 R>>stream
xœVkPSW¿“{¦UڒF‰hr§îZ;X´v·•Ž}((uEä- \ÂŐó€’@     !!<"Þ(h…
e[ѕµµ»j»ÅîL»Uû¡Ýéö\{Ù½Ý¶3ûmgî‡sÎÿñ;ÿóû?.[»ãñxÂcGŠ9žL‘šçé"™2p΄ñ˜Ík˜-Aì^vìG㏻ø[°Øî
 õŒdvzóc߆<”<Å<|‚ùòÉUG
<?ï"ïáö”Äcυ‡ïˆ¢U5%/Ð/DFF9â?"šÔPr%±[“
ZUD*µDIÚ’ȧ$u4>ýP\±=&.…ˆ!•¤Z¦ âu9
*—ˆ¥rI¥†|ŽÈ§Õ„buCäÒÊ<JKÑJM±OCȍŠÌ¥8#RŸKª‚„ŠTQ
·&(
!W˔Z2ÐÒ¥ÌUèòðÜy>­Ô*5Íɋ8   ç*žÖh5¹jJ¥%8Äø胫wÔÈ´\
ʼn      
:ŸÓÌ£suh~’ie”RChI½6€“Cy”F¥8\ΕJM­\A§¡”òŸÑwjR.Sç)H͊ßÀ«üñ‹¨e*•Â°bK¯hý„Oi5¤"?"Ž*ÊÑiˆN‰8:’ˆ%I¹N!Sÿ¯äg¾þ?1
‰UæÒäµ\S£¥t2}aÏcG±h,;ˆmÒ°7±dì¶KÁ~‡¥bû±t,ãaB.°µÜæ:o+æ}°&}ͅ 
ƵÛÖvñÃùþ7‚LÁ¿ðZ      ö"G0ƒ`~’ù¶'äoßmª˜›h¿¨”4i¥yɆ=¼)Øon—2E8¼ÕÑqÇ       
zØq=þ›Û€Gñ¸Ð 
address@hidden(z9¨“yFÔäh­oƒÀßb̐²õ8L¬0¥U#*ðàiÆv8Ð~éBoû(sýŠCR–Äa¬¹4= 
”çÁ3œåíp ~/ëò¾LEéáÉÜڐa *’ËÄÁL¼å#†?ȃŸ1Ï 
]¢ãäšDvþáÿx÷ÖgîŠüVi“ÎEwNCñ™Þž¾ËÞ~9#­Dž#MÏ¢cà^Àn¸‚.LuOH|ý=¾¡«€‹ÄâgvûyðKÔñer0Ù"vîpV†}½
… ÿD´qç}öi©™-_
g·°ü·bÞÈËïŸ*–Òe7á-pÿí¥[’Ào åÂ'xÌ´Gtüõlåa˜³•‹†sÖÑÚk
a>H½uÿãÛg¦$熻Fà9¸tbzŸƒ5…¦6¨[`'ôŽŽû\-uÍuØSë®k‚gá”gØ7ê÷ŒÃy8hï3
ï"“*Þ؆€ µÎa“X+m•V™œ}¼¬ïVXmVû&XS_ë¨Â`ß¼<”}uî\ÿ¨ÄÜV¬.µè 8ßèû“Mâ»ß
8î÷Œ{ÑúïB–¾{‰CùEÎÎd¾wÕ·7¸ë[ ¸¥ŒŒ8Œ²T´G‹?ä¬j…„p!“†ŠE*­–¦{µþÁ¾ÞA¿¶O)
4²+‰^æ•.SGÈÒ2:ÈyßÌhæEvAfEÛE)zÀîƅ£¥øRM»¦¶‡´ÝdªPéåE䝛–
»Ðv›   ¿TÓa„™€uâ{/¥ýùìd§Ï'™™áïÁ…±µóމ¶ßw¬täÅÄ+LhHÏçhûg…
˜¸÷E¥¦r»­µcVŠŽápÁ>hì×Md÷ÄCðü¾ŒX­·¤¯ÿ´··±ÎY×,­m©sÁfà靚ó)S$q8q¤´*›Ô•˜(X„i±³Y×fϟ^¸&º9»‹Ï‡ÁÓíãç8»ósTØ+‹Ë5&º²‚zlFÚÈQz~­Ÿ
ôvèe^ôðÐð”é(`I§b–}¥…
~ŽÖqí¿s¤^ìawñ¡ÚV4ÁòrZa·•Ì%&o(=mƒnØánª6×؂ÁNóð‰{ì¯BYY”c±ֈèל.wº›š=n¯ôzâ+–h´5Ø
 M
ÖêÂZ.Ù{8ê·,ðn.£ØÀÔÍL·Ã™gZʎKÙ&¦˜ŒIuÝjžÚ`lƒ“
̂´iO,ø˜›¶iznÚÅÁÜC‰—Iõ¢d¯`è±»¹Ö­»Û½n=†ýTø
endstream
endobj
11 0 obj
2504
endobj
12 0 obj
<</R4
4 0 R>>
endobj
13 0 obj
<</R10
10 0 R>>
endobj
10 0 obj
<</Subtype/Type1/BaseFont/WMIIGM+Times-Roman/Type/Font/Name/R10/FontDescriptor 
9 0 R/FirstChar 32/LastChar 251/Widths[
250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278
500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444
921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722
556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500
333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500
500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 333 500 500 167 500 500 500 500 180 444 500 333 333 556 556
250 500 500 500 250 250 453 350 333 444 444 500 1000 1000 250 444
250 333 333 333 333 333 333 333 333 250 333 333 250 333 333 333
1000 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 889 250 276 250 250 250 250 611 722 889 310 250 250 250 250
250 667 250 250 250 278 250 250 278 500 722 500]
>>
endobj
2 0 obj
<</Producer(ESP Ghostscript 7.05)>>endobj
xref
0 14
0000000000 65535 f 
0000000593 00000 n 
0000004676 00000 n 
0000000534 00000 n 
0000000641 00000 n 
0000000374 00000 n 
0000000015 00000 n 
0000000355 00000 n 
0000000982 00000 n 
0000000710 00000 n 
0000003654 00000 n 
0000003571 00000 n 
0000003592 00000 n 
0000003622 00000 n 
trailer
<< /Size 14 /Root 1 0 R /Info 2 0 R
>>
startxref
4726
%%EOF

--- NEW FILE ---
\documentclass[11pt, a4paper, twoside, pdftex]{article}
\usepackage[english]{babel}
\usepackage{a4}
\usepackage{a4wide}
\usepackage{pifont}
\usepackage{array}
\usepackage{calc}
\usepackage[pdftex]{graphicx}
\usepackage[pdftex,
            pagebackref=true,
            colorlinks=true,
            linkcolor=blue,
            urlcolor=blue,
            pdftitle={Adonthell Engine Architecture},
            pdfauthor={Kai Sterker},
            bookmarksopen=True,
            pdfsubject={Adonthell Developer's Reference}
           ]{hyperref}
\usepackage{fancyheadings}
\usepackage{float}
%\usepackage{makeidx}
%\makeindex

%------- Redefinitions ----------
\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}}
%\newcommand{\Index}[1]{#1\index{#1}}

\begin{document} 
 
%-------------- Title ----------------
\clearemptydoublepage         % Title
\pagestyle{empty}
\title{Adonthell \\ Engine Architecture}
\author{Kai Sterker}
\date{01.01.2003}
\maketitle
\thispagestyle{empty}

%------------------------------------------
\newpage                      % Copyright
\pagestyle{empty}

\begin{center}
{\sc Adonthell \\ Engine Architecture} \\
\vspace*{\stretch{2}}
This document is part of the Adonthell Developer's documentation\\
{\sf \href{http://adonthell.linuxgames.com}{http://adonthell.linuxgames.com}}\\
\vspace{1em}
\Pisymbol{psy}{211} 2003 Kai Sterker \& The Adonthell Team\\
{\sf address@hidden
\vspace{1em}
Created with \LaTeX{}2\raisebox{-0.4ex}{$\varepsilon$}
\end{center}
\clearemptydoublepage

%------------------------------------------
\tableofcontents             % Contents
\clearemptydoublepage        
%------------- Layout ---------------------
\pagestyle{fancyplain}
\addtolength{\headwidth}{\marginparsep}
\addtolength{\headwidth}{\marginparwidth}
\renewcommand{\sectionmark}[1]{\markboth{\thesection\ #1}{}}
\renewcommand{\subsectionmark}[1]{\markright{#1}}
\lhead[\fancyplain{}{\bfseries\thepage}]{\fancyplain{}{\bfseries\rightmark}}
\rhead[\fancyplain{}{\bfseries\leftmark}]{\fancyplain{}{\bfseries\thepage}}
\cfoot{}

%------------------------------------------
\pagenumbering{arabic}
\thispagestyle{empty}
\include{abstract}          % Abstract
\thispagestyle{empty}
\include{overview}          % Overview
\end{document}

--- NEW FILE ---
#FIG 3.2
Landscape
Center
Metric
A4      
100.00
Single
-2
1200 2
0 32 #cfffcf
0 33 #f7e7ae
0 34 #f7c3ae
0 35 #bef7ae
0 36 #d7f7ae
2 1 0 1 0 33 50 0 20 0.000 0 0 7 0 0 6
         1800 4050 1800 3600 3825 3600 3825 3825 5850 3825 5850 4050
2 2 0 1 0 34 50 0 20 0.000 0 0 7 0 0 5
         1800 4050 5850 4050 5850 4500 1800 4500 1800 4050
2 1 0 1 0 35 50 0 20 0.000 0 0 7 0 0 6
         1800 3600 1800 3150 5850 3150 5850 3375 3825 3375 3825 3600
2 2 0 1 0 36 50 0 20 0.000 0 0 7 0 0 5
         5850 3825 3825 3825 3825 3375 5850 3375 5850 3825
2 1 0 1 0 36 50 0 20 0.000 0 0 -1 0 0 2
         1800 3600 3825 3600
4 0 0 50 0 0 12 0.0000 4 180 2250 2790 4320 Hardware / Operating System\001
4 0 0 50 0 0 12 0.0000 4 135 825 2430 3420 Game data\001
4 0 0 50 0 0 12 0.0000 4 180 900 2430 3870 Engine core\001
4 0 0 50 0 0 12 0.0000 4 135 1320 4230 3645 Game extensions\001

--- NEW FILE ---
%PDF-1.3
%Ç쏢
6 0 obj
<</Length 7 0 R/Filter /FlateDecode>>
stream
xœ½SËjÃ@¼ë+tkR¨biŸ¾B{(”6þ“lŒKì4N íßw·yÚK˂—É£    
­0#Æ,ý=m`£WÕ2ʝŠ‘<³ñk½`Wc
¬ÈKÆ(¹AƒÍ1^HY\
endobj
7 0 obj
350
endobj
5 0 obj
<</Type/Page/MediaBox [0 0 258 88]
/Rotate 0/Parent 3 0 R
/Resources<</ProcSet[/PDF /Text]
/ExtGState 12 0 R
/Font 13 0 R
>>
/Contents 6 0 R
>>
endobj
3 0 obj
<< /Type /Pages /Kids [
5 0 R
] /Count 1
>>
endobj
1 0 obj
<</Type /Catalog /Pages 3 0 R
>>
endobj
4 0 obj
<</Type/ExtGState/Name/R4/TR/Identity/OPM 1/SM 0.02>>
endobj
9 0 obj
<</Type/FontDescriptor/FontName/NWJRWZ+Times-Roman/FontBBox[-168 -281 1000 
924]/Flags 34
/Ascent 924
/CapHeight 676
/Descent -281
/ItalicAngle 0
/StemV 111
/MissingWidth 250
/XHeight 461
/CharSet(/space/slash/E/G/H/O/S/a/c/d/e/g/i/m/n/o/p/r/s/t/w/x/y)
/FontFile3 8 0 R>>
endobj
8 0 obj
<</Subtype/Type1C/Filter/FlateDecode/Length 11 0 R>>stream
address@hidden  
Â#Jx#"R:TQ«c§­ºÚ±íLÕ;mgj»fÕY÷ö;ösfÝ/ö®é¬u篻Vþ89{Ÿýûö·¿½7Z¾Œâñx‚¤Ì_¦dælL“)¤ÚÍ)*E¡2üz#ÃãÖ.ãÖEà—ñÄ÷–ïã"×Q‰½«8ñJêèÚUî¨{›Êýãaî‹G~ÔÌñæy÷6¤§d>³qã¦x•Ú¤‘••ëØç·mÛÆ™Øÿµ°;¥ZY™’]O*¥r•Z!UêbÙT©”Õ•KÙR™\ÊÆïKÎ~#i7»awR:»[ª”j
ål²¾H.+feÅR¥Vú
[ªÒ°òþ°Å*e‰L'S)µ±ì-[ÈjÕÒbùHj,–ªÃ†M¬ZªQÈ´ZòÌÊ´l™¦P©“–°:+SËõ%axò¾T¥Ô±jŠØÄBB%«´:m±F¦Ö±1yç®Ψ+/Ô
…
qµ2bfU¥Ä³DU¬góO›®P¦Ô²:©QÆ)’²%2­Z^h"¸$”Z#{p½V¦,û}«‘–jJäR탸á[ù1?ö_².T«å¦ߪxý_¦ÓJ奱I2E‘^Ë>¨)›¤ÚÆ&²)Ò2½¼Pó-?ÖëÿWAŠ¢Ö˜”Ūµt_‚¦L»['KÝc(4*žc)address@hidden/û>¢r9oyAä–È÷øyü·i1½Èüœ¹òÅOЊЊ߬8‹Ü«¹#Xy“»äq*.Cˆc,ü±îšªúFקäY<ŒiÔæêª÷C‡zžÓÍL
0q{?EôßÎ]ûÔß^Ú.iÓ{U½¦£ :Þß7°”pfKN–¡¬H’¯Ú
/3ø±ObQě3Ý£Sâ¡Á¾¡‘‹
ÉÄâ^ñàÔõErsBüXÜF,Æ1Y¢PÔ×ÿÄhÍswð£›JxóâF¼Gܽ½¤tp¦R¢Z¬º
ט;g._‡c-B7·‚D»7#Ð7!zz1²›656À`Êj;æ%ܺ®ù€¹Ü±×,ª¢½Mmàæ„ÏQ$Áq´tLÝQ
¦cq$~?úÑKhÙÒtð̄d/xËÁé¬vØMC ÌÖ´OÑÃ(ráÃß¿½›!        “BÑcî5!…cŒ[ýNÔ՛H{ 
ÎÇ­úš<àfÂãȕÜ/§!ÓnOv1‚õfTGöÒۛlð[=OOV
:fA+þŒ–£Ÿ¡G>65_“ž/¹A»šÓ+Ëmifzv»pdijþÅ×0ƒ#r¶Çç¦LˆÃEú
+ϛ¦ã
—t‰_û®cX3¦˜Ê;š ِk’Êr‹Ô;aƒÅ׎è;]DÔ¬Œ6     ;>ž8q   .Á 
Êÿ³ú^©uŠûÇŸ{ñ#ÐßïmâT¼?…
ó6ÅÝ/¹øyɟÈé³ÑZÄ¢¼¿*o¥½#Iü`ËÔFrûËçaÞ4uèlÎèfÀA²m—!³FcÖètååM{ËG3ç+¾wCß̞aNž^è?„'úŒ'ÐéSÈ7mì‹úÏ»k:î+ôŠPÅÏÆT?
      ŒšŸ…­NO»¡z(–þ#lþ­Ì
ßýšpSäè¯r±A[\FÛ®®lBï£÷„õhm¤ßÐPãll¬‘ÍöVFÐãÕë[Ǽœ’Ÿ:V|ë€äBŤ¡GrQþ!U–Lîï7Š+Õ
address@hidden

address@hidden
üúP’:oyñQÒW¡/çÄs—‡Þ‡%X0ž,Qu«%1üZT©ç»Œ&k%8 Êmò
äy¶åâ'ñÓ¸à™¡íKɒ÷v}-EËà6 
ŸNÎL2(Ÿ†‹þ­Ìj4êXäVŽEªÃ¿º¹Fpyɀ|°1üöF·Kì¬qÕ8Ò´‚UõŒà–ÝérÖ=GšÜ
Œàƒ·ñYþ–‘‚‹Ӄ‹ãb[G¥ÆìЃ¨Ô2ô[   :In}Ë'„¾&ƒhÕݨËwAPþŇûîsi‘Ò;›ýM>
> ´…†x‡}WxJ8ô­µípAˆpY¨R¨ÖéTª~]hx 
> 8¤P’&ø¶uJäð)Y0jø6²~»F°–K%}¢’_¯³ÛÍäZÈpó2‚ñ®ÒRÈ7W(Ëå¦BȄÿ˜KE˓¯K‹ŽI}¶ÖJÐ2{²ó^!ñZ-ÖñGpyd?_Ø×ÔÙˆ!¯ïs’H–é™Ú™DþÉßþ˜ö.Ž¾&yâBáœeÎÍN_~sÖX6)=Ôu¸;™è›úÐÂ:ÑÇûÓ]´t7I¢
> address@hidden(8ƒÓ,ȽLö…÷I9-ô„³Ý f°¸´võóX½éÌó
endstream
endobj
11 0 obj
3113
endobj
12 0 obj
<</R4
4 0 R>>
endobj
13 0 obj
<</R10
10 0 R>>
endobj
10 0 obj
<</Subtype/Type1/BaseFont/NWJRWZ+Times-Roman/Type/Font/Name/R10/FontDescriptor 
9 0 R/FirstChar 32/LastChar 251/Widths[
250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278
500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444
921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722
556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500
333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500
500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 333 500 500 167 500 500 500 500 180 444 500 333 333 556 556
250 500 500 500 250 250 453 350 333 444 444 500 1000 1000 250 444
250 333 333 333 333 333 333 333 333 250 333 333 250 333 333 333
1000 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250
250 889 250 276 250 250 250 250 611 722 889 310 250 250 250 250
250 667 250 250 250 278 250 250 278 500 722 500]
>>
endobj
2 0 obj
<</Producer(ESP Ghostscript 7.05)>>endobj
xref
0 14
0000000000 65535 f 
0000000672 00000 n 
0000005378 00000 n 
0000000613 00000 n 
0000000720 00000 n 
0000000454 00000 n 
0000000015 00000 n 
0000000435 00000 n 
0000001075 00000 n 
0000000789 00000 n 
0000004356 00000 n 
0000004273 00000 n 
0000004294 00000 n 
0000004324 00000 n 
trailer
<< /Size 14 /Root 1 0 R /Info 2 0 R
>>
startxref
5428
%%EOF

--- NEW FILE ---
\section{Overview}

Before describing the different parts and layers of the engine in detail,
lets have a look at the big picture.

\subsection{Design Principles}

As Adonthell's development progressed, a few fundamental design decisions have
been made. These principles have to be taken into account, whenever a part of
the engine is updated or new parts are added. So please read on carefully 
before you start coding; it may save you much trouble.

\begin{enumerate}
\item {\bf Code and data have to be strictly separated}

This is probably the most important rule of all. The engine is not intended for 
a
single RPG, but should instead be able to drive multiple games. For that 
reason, the code must not contain any game data. Only functionality needed for 
a RPG may be provided by the engine, not the games themselves.

\item {\bf The engine should be as flexible as possible}

Creators of games should have the most possible freedom in designing their
game. That is, the engine shall help people making their own RPGs without
limiting their creativity. The game should control the engine, not the other
way round. That means that the engine is no interpreter of game data, but
rather a library the game may use for common and repetitive tasks.

\item {\bf The engine should be easily extendable}

To allow people to make quite different types of games, with different rules,
different items, different AI or just a different user interface, the engine
needs to be customisable. Therefore, not only game data, but also most of the
game mechanics have to be separated from the core engine.

\item {\bf The engine should be portable}

Adonthell shall run on as many different operating systems and
hardware architectures as possible. Right now the engine supports BeOS, BSD, 
Linux, Mac OS X, Solaris and Windows on hardware such as arm, alpha, ia64, ppc, 
sparc, x86 and possibly other. This has to be taken into account when writing 
code or utilising third-party libraries.
\end{enumerate}

\begin{figure}[ht]
\center
\includegraphics{layers.pdf}
\caption{Adonthell engine and surrounding layers}
\end{figure}

When taking these for points together, we get the following picture of the 
engine and its surrounding layers: the {\bf engine core} is the only component 
that has direct access to the {\bf operating system} and underlying hardware. 
{\bf game specific extensions} -- often written in Python -- may make use of 
interfaces provided by the engine, but not access the OS. This helps to make 
sure that a game runs on all platforms supported by the Adonthell engine.

Both game engine and game extensions may access the game data: maps, graphics, 
dialogues and so on.

\subsection{Architecture}

We've already seen the different components of an RPG made with the Adonthell 
engine. Before we dive into the details of the engine, we'll have a look how 
those components interact.

\begin{figure}[ht]
\center
\includegraphics{arch.pdf}
\caption{Adonthell engine architecture}
\end{figure}

The engine consists of two different parts: the {\bf launcher} and the {\bf 
core} -- or library -- part. The launcher runs when starting the {\tt 
adonthell} executable. It initialises the different engine subsystems, such as 
audio and graphics, before giving control to a game specific start script. In 
future versions, the launcher will also allow users to select between different 
games; so there are different games installed.

As soon as a game is started (by calling it's init script, all control remains 
with that game. After completing all game specific initialisation, the init 
script should start the engine's main loop. This provides basic functionality 
like input listeners, map and gui rendering. But it also makes use of hooks 
provided by game extensions.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]