PageSourceSearch

https://alien-project.org/

html alien-project.org collected 2026-09-25 20:22:03 UTC 29,431 bytes, 330 lines download raw bytes

1<!DOCTYPE HTML> <html prefix="og: https://ogp.me/ns#" class="no-js responsivelayout supportsbreakout" lang="de" data-zpdebug="false" data-ptr="" data-pagename="Home"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Artificial LIfe ENvironment (ALIEN) is an artificial life simulation tool based on a specialized 2D particle engine in CUDA for soft bodies and fluid-like media. Each simulated body consists of a network of particles that can be enriched with higher-level functions, ranging from pure information processing capabilities to physical equipment (such as sensors, muscles, weapons, constructors, etc.) whose executions are orchestrated by a signaling system. The bodies can be thought of as agents or digital organisms operating in a common environment."> <meta name="keywords" content="artificial life evolution software tool"> <meta name="generator" content="Zeta Producer 16.7.0.0, ZP16X, 26.07.2023 06:52:54"> <meta name="robots" content="index, follow"> <title>artificial life environment</title> <meta property="og:type" content="website"> <meta property="og:title" content="artificial life environment"> <meta property="og:description" content="Artificial LIfe ENvironment (ALIEN) is an artificial life simulation tool based on a specialized 2D particle engine in CUDA for soft bodies and fluid-like media. Each simulated body consists of a network of particles that can be enriched with higher-level functions, ranging from pure information processing capabilities to physical equipment (such as sensors, muscles, weapons, constructors, etc.) whose executions are orchestrated by a signaling system. The bodies can be thought of as agents or digital organisms operating in a common environment."> <meta property="og:url" content="http://www.alien-project.org/index.html"> <meta property="twitter:card" content="summary_large_image"> <meta property="twitter:title" content="artificial life environment"> <meta property="twitter:description" content="Artificial LIfe ENvironment (ALIEN) is an artificial life simulation tool based on a specialized 2D particle engine in CUDA for soft bodies and fluid-like media. Each simulated body consists of a network of particles that can be enriched with higher-level functions, ranging from pure information processing capabilities to physical equipment (such as sensors, muscles, weapons, constructors, etc.) whose executions are orchestrated by a signaling system. The bodies can be thought of as agents or digital organisms operating in a common environment."> 
1<script>
2		document.documentElement.className = document.documentElement.className.replace(/no-js/g, 'js');
3	</script>
3 <link rel="stylesheet" href="assets/bundle.css?v=639242911654700358"> <link rel="stylesheet" href="assets/bundle-print.css?v=638304795789395093" media="print"> 
3<script src="assets/bundle.js?v=639242911654740366"></script>
3 <link rel="canonical" href="http://www.alien-project.org/index.html"> <link rel="preload" href="assets/fonts/fontawesome-webfont.woff2?v=4.7.0" as="font" type="font/woff2" crossorigin=""> <style>
4.myButton {
5	box-shadow: 0px 10px 14px -7px #276873;
6	background:linear-gradient(to bottom, #599bb3 5%, #408c99 100%);
7	background-color:#599bb3;
8	border-radius:8px;
9	display:inline-block;
10	cursor:pointer;
11	color:#ffffff;
12	font-family:Arial;
13	font-size:20px;
14	font-weight:bold;
15	padding:13px 13px;
16	text-decoration:none;
17	text-shadow:0px 1px 0px #3d768a;
18}
19.myButton:hover {
20	background:linear-gradient(to bottom, #408c99 5%, #599bb3 100%);
21	background-color:#408c99;
22}
23.myButton:active {
24	position:relative;
25	top:1px;
26}
27
28/* CSS Button Style 2 by indzign.blogspot.com */
29.button2{float:left;list-style:none;text-align:center;width:95%;margin:10px;padding:2px;font-size:14px;clear:both}
30.button2 ul{margin:0;padding:0}
31.button2 li{display:inline;margin:5px;padding:0;list-style:none}
32.button2 li a.demo,.button2 li a.download{position:relative;padding:14px 48px 14px 16px;background:#f39c12;display:block;color:#fff!important;font-weight:700;font-size:14px;text-align:left;text-transform:uppercase;letter-spacing:.2px;border-radius:3px;box-shadow:0 1px rgba(0,0,0,0.1);line-height:normal;transition:all .3s;max-width:170px;margin:auto;overflow:hidden}
33.button2 li a.download{background:#3498db}
34.button2 li a.demo:hover,.button2 li a.download:hover{background:#666}
35.button2 li a.demo:active,.button2 li a.download:active{cursor:pointer}
36.button2 li a.demo:after,.button2 li a.download:after{content:'\F054';background:rgba(0,0,0,0.1);position:absolute;right:0;top:0;font-weight:normal;display:inline-block;margin:0 0 0 10px;color:#fff;padding:16px 24px;font-family:fontawesome;transition:all .3s}
37.button2 li:hover a.demo:after,.button2 li:hover a.download:after{background:transparent;-webkit-animation:bounceright .3s alternate ease infinite;animation:bounceright .3s alternate ease infinite}
38@-webkit-keyframes bounceright{from{-webkit-transform:translateX(0)}to{-webkit-transform:translateX(3px)}}
39@keyframes bounceright{from{transform:translateX(0)}to{transform:translateX(3px)}}
40
41</style> 
41<script>
42		// if after 1000ms we haven't got webfonts, show the user something, a FOUT is better than nothing
43		// http://kevindew.me/post/47052453532/a-fallback-for-when-google-web-font-loader-fails
44		setTimeout(function() {
45			// you can have the webfont.js cached but still have no classes fire and you will have a window.WebFontConfig object
46			if ( ! ("WebFont" in window)) {
47				// non wfl loader class name because their events could still fire
48				document.getElementsByTagName("html")[0].className += " wf-fail";
49			}
50		}, 1000);
51	
52		WebFontConfig = {
53			custom: { 
54				families: [ 'Roboto:300,400,700' ], 
55				urls: ['media/fonts/zp-webfonts.css?v=346658018']
56			}
57		};
58	</script>
58 
58<script src="assets/js/webfont/1.6.28/webfont-local.js"></script>
58 <link class="zpfaviconmeta" rel="shortcut icon" type="image/x-icon" href="assets/favicon.ico?v=2021070601"> </head> <body id="flat-responsive" class="notouch haswebdescription hasfixednav hasheader"> <a id="top"></a> <div id="header"> <div id="webdescription"> <div id="webtext"> <div id="webname"><a href="index.html">artificial life environment</a></div> </div> </div> <div id="nav"> <ul class="zpmarkactive default submenu touchhovermenu clickhovermenu out" data-trianglemode="true"><li class="logo hidden"><a href="index.html"></a></li><li class="zpnodefaults haschilds"><a class="active" href="index.html" data-isredirected="false">Home</a><ul><li class="zpnodefaults"><a href="objectives.html" data-isredirected="false">Objectives and visions</a></li><li class="zpnodefaults"><a href="getting-started.html" data-isredirected="false">Getting started</a></li><li class="zpnodefaults"><a href="participation.html" data-isredirected="false">Contributing to the project</a></li><li class="zpnodefaults"><a href="archive.html" data-isredirected="false">Archive</a></li></ul></li><li class="zpnodefaults"><a href="artworks.html" data-isredirected="false">Artworks</a></li><li class="zpnodefaults"><a href="downloads.html" data-isredirected="false">Downloads</a></li><li class="zpnodefaults"><a href="https://alien-project.gitbook.io/docs/" data-isredirected="true" target="_blank" rel="noopener">Documentation</a></li><li class="zpnodefaults"><a href="networks.html" data-isredirected="false">Networks</a></li><li class="zpnodefaults haschilds"><a href="contact.html" data-isredirected="false">Contact</a><ul><li class="zpnodefaults"><a href="about-me.html" data-isredirected="false">About me</a></li><li class="zpnodefaults"><a href="legal-notice.html" data-isredirected="false">Legal Notice</a></li><li class="zpnodefaults"><a href="privacy-protection.html" data-isredirected="false">Privacy Protection</a></li></ul></li><li class="overflownonly"><a href="#" id="mobilenavtoggle" class="tabletonly toggle" aria-label="Menu on/off">Menu</a></li></ul> 
58<script>
59$z(document).ready(function(){
60	// we find the active page's a-tag and then walk upwards the dom marking the respective parent li as active/open
61	$z('ul.zpmarkactive.default li a.active').parents('li').each(function(index){
62		var that = this;
63		// do not add open class to immediate parent li
64		if ( index > 0 ){
65			$z(that).addClass('open');
66		}
67		$z(that).addClass('active');
68		//$z(that).find('> a').addClass('active');
69	});
70	$z("ul.zpmarkactive.default").removeClass("zpmarkactive");
71	
72	/*
73	$z("ul.zpmarkactive.default li:has(a.active)").addClass("active");
74	$z("ul.zpmarkactive.default li.haschilds > a").addClass("haschilds");
75	$z("ul.zpmarkactive.default li.haschilds:has(a.active)").addClass("active");
76	$z("ul.zpmarkactive.default li.active > a").addClass("active");
77	
78	$z("ul.zpmarkactive.default").removeClass("zpmarkactive")
79	*/
80});
81</script>
81 </div> </div> <div id="slider" class="noprint"> <a id="a1759"></a> <div id="headerslider" class="flexslider"> <div class="flex-container"> <ul class="slides"> <li class="first"> <img loading="lazy" src="media/images/version4-5-large.png" width="2000" height="400" class="zpfocal" data-focus-x="50" data-focus-y="50" data-image-w="2000" data-image-h="400" alt=""> </li> <li> <img loading="lazy" src="media/images/space-insects-large.png" width="2000" height="400" class="zpfocal" data-focus-x="50" data-focus-y="50" data-image-w="2000" data-image-h="400" alt=""> </li> <li> <img loading="lazy" src="media/images/version4-3-large.png" width="2000" height="400" class="zpfocal" data-focus-x="50" data-focus-y="50" data-image-w="2000" data-image-h="400" alt=""> </li> <li> <img loading="lazy" src="media/images/version4-1b-large.png" width="2000" height="400" class="zpfocal" data-focus-x="50" data-focus-y="50" data-image-w="2000" data-image-h="400" alt=""> </li> <li> <img loading="lazy" src="media/images/version4-4-large.png" width="2000" height="400" class="zpfocal" data-focus-x="50" data-focus-y="50" data-image-w="2000" data-image-h="400" alt=""> </li> <li> <img loading="lazy" src="media/images/version4-large.png" width="2000" height="400" class="zpfocal" data-focus-x="50" data-focus-y="50" data-image-w="2000" data-image-h="400" alt=""> </li> </ul> </div> </div> 
81<script>
82		$z(document).ready(function() {
83			var useCssAnimation = false;
84			
85			var autoplay = true;
86			if ( $z("body").hasClass("zpreducemotion") && 'slide' !== 'fade' ){  // don't allow moving animations
87				autoplay = false;
88			}
89			
90			function initSlider(){
91				console.log("Num Headers: 6");
92				$z('#headerslider .flex-container').flexslider({
93					useCSS: useCssAnimation,
94					keyboard: true,
95					itemMargin: 0,
96					animation: 'slide',
97					controlsContainer: '#headerslider.flexslider',
98					slideshow: autoplay,
99					slideshowSpeed: 7000,
100					directionNav: true,touch: true,
101					controlNav: false,
102					randomize: false,
103					
104					pauseOnHover: true,
105					smoothHeight: false,
106					start: function(el){
107						focalImages();
108					},
109					prevText: "zur&#252;ck",
110					nextText: "weiter"
111				});
112				$z('#headerslider.flexslider').addClass("inited");
113			}
114			
115			if ( $z('#headerslider .flex-container ul.slides li img').length > 0 ){
116				// init flexslider after 1st image has loaded, so have dimensions as quickly as possible without having to wait too long on window loaded or such and can start right with doc ready
117				$z('#headerslider .flex-container ul.slides li img').first().one("load", initSlider).each(function() {
118					if(this.complete) $z(this).trigger('load');
119				}); // .each() is to work around a browser bugs which don't fire load() for cached images http://stackoverflow.com/a/3877079
120			}
121			else{
122				// also init flexslider if it doesn't contain images and is text only
123				initSlider();
124			}
125			
126			// make sure the slider is properly resized when the window is resized (400ms after window.resize ended)
127			$z('#headerslider .flex-container').on('resize',function(event){
128				// prevents slider.resize() from causing a windows.resize event again which looped
129				event.stopPropagation();
130			});
131			var sliderTimeout1759 = null;
132			$z(window).resize(function(event) {
133				clearTimeout(sliderTimeout1759);
134				sliderTimeout1759 = setTimeout(function() {
135					var slider = $z('#headerslider .flex-container').data('flexslider');   
136					debug.log("Resizing Slider: ", slider);
137					if ( slider ){  // if slider contains only one image, slider will be undefined
138						$z(slider).css('height', '');
139						slider.resize();
140					}
141					clearTimeout(sliderTimeout1759); 
142				}, 400);
143			});
144			
145			// activate links for individual slideshow
146			$z('#headerslider .flex-container ul.slides li[data-clickurl]').css("cursor","pointer");
147			$z('#headerslider .flex-container ul.slides li[data-clickurl]').click(function (event){
148				// Because this script captures clicks for a container, it will also fire when a regular link inside the container 
149				// is clicked. Therefore, we check below, if a regular link i.e. <a href="#"> was the target of the click.
150				// Depending on the browser used, event.target might not be available, but event.srcElement would…
151				var targ;
152				if (event.target){
153					targ = event.target;
154				}
155				else if (event.srcElement) {
156					targ = event.srcElement;
157				}
158				if (targ.nodeName == "A") {
159					// a regular link i.e. in a Caption was clicked. Return early, so the link's href doesn't get overridden
160					return;
161				}
162				
163				if ( $z(this).data("clicktarget") ){
164					window.open($z(this).data("clickurl"), $z(this).data("clicktarget"));
165				}
166				else{
167					window.location = $z(this).data("clickurl");
168				}
169				event.preventDefault;
170				return false;
171			});
172		});
173  	</script>
173 </div> <div id="content" class="main"> <div class="zparea zpgrid" data-numcolumns="" data-areaname="Standard" data-pageid="603"> <div id="container_36" class="zpContainer first last zpBreakout " data-zpeleel="container" data-zpleid="36"> <div class="zpRow standard " data-row-id="389"> <div class="zpColumn odd zpColumnWidth3 c4 first" style="" data-column-id="442"> <div class="zpColumnItem"> <div id="a1760" data-article-id="1760" data-zpleid="1760" class="articlearea zpwBild popupimage"> <div id="igal1760" class="zpImageGallery" data-kind="singleimage" data-titleshow="1" data-htmltitle="" data-width="auto" data-height="auto" data-bordercolor="default" data-borderwidth="0" data-margin="0" data-titleposition="outside" data-transition="elastic" data-slideshow="0"> <a class="fancybox preloadimg zpnolayoutlinkstyles" href="media/images/molecule1large-large.png" title="" aria-label="Bild in Lightbox öffnen (open image in lightbox)"> <img loading="lazy" class="singleImage" src="media/images/molecule1large.png" width="499" height="210" alt=""> </a> </div> </div> </div> <div class="zpColumnItem"> <div id="a1761" data-article-id="1761" data-zpleid="1761" class="articlearea zpwText"> <h2 style="text-align:center;" data-zpfieldname="headline">Main features</h2> <ul> <li><span style="color: #c4daed;"><span style="color: #97f4dd;"><strong>Interactive&nbsp;physics simulation</strong></span> of&nbsp;damageable and glueable soft bodies and fluids&nbsp;</span> </li><li><span style="color: #c4daed;"><strong><span style="color: #97f4dd;">Genetic system and neural networks</span>&nbsp;</strong>for simulating digital organisms and evolution</span> </li><li><span style="color: #c4daed;"><span style="color: #97f4dd;"><strong>Built-in graph and genome editor</strong></span> for&nbsp;designing own agents and environments</span> </li><li><span style="color: #97f4dd;"><strong>Simulation and rendering on GPU</strong></span> </li><li><span style="color: #97f4dd;"><strong>Spatio-temporally varying simulation parameters</strong></span> </li><li><span style="color: #c4daed;"><span style="color: #97f4dd;"><strong>Software is open-source</strong></span> and available under the BSD-3-Clause license</span></li></ul> <p>&nbsp;</p> </div> </div> <div class="zpColumnItem"> <div id="a2121" data-article-id="2121" data-zpleid="2121" class="articlearea zpwText"> <h2 style="text-align:center;" data-zpfieldname="headline">System requirements</h2> <ul> <li><span style="color: #c4daed">Nvidia graphics card with compute capability version 6.0 (<em>Pascal</em> architecture) or higher</span> </li><li><span style="color: #c4daed">4&nbsp;GB video memory recommended</span> </li></ul> <p>&nbsp;</p> </div> </div> <div class="zpColumnItem"> <div id="a2151" data-article-id="2151" data-zpleid="2151" class="articlearea zpwText"> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a class="myButton" href="https://alien-project.org/files/alien-develop.zip">Download for Windows</a>&nbsp;&nbsp;&nbsp;<span style="color: #c4daed;">&nbsp;</span></p> <br> <p><span style="color: #c4daed;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or visit ALIEN on &nbsp;&nbsp;</span> <a href="https://github.com/chrxh/alien"><img src="https://img.shields.io/github/stars/chrxh/alien?label=GitHub&amp;style=social" class="fr-draggable"></a> </p> <a href="https://mstdn.science/@chrxh" rel="me"></a> </div> </div> </div> <div class="zpColumn even zpColumnWidth3 c4" style="" data-column-id="443"> <div class="zpColumnItem"> <div id="a1762" data-article-id="1762" data-zpleid="1762" class="articlearea zpwText" style="margin-bottom: 25px; "> <h2 style="text-align:center;" data-zpfieldname="headline">About the software project</h2> <p><span style="color: #c4daed"><em>ALIEN&nbsp; </em>is an artificial life simulation program based on a specialized physics and rendering engine in CUDA. It is designed to simulate digital organisms in artificial ecosystems and to serve as a platform for evolution simulations. </span></p> <p><span style="color: #c4daed">See the <a href="objectives.html"><span style="color: #c4daed"><strong>objectives</strong></span></a><span style="color: #c4daed">&nbsp;of the project and how to <a href="getting-started.html"><span style="color: #c4daed"><strong>get started</strong></span></a>.</span> <p></p></span></p> </div> </div> <div class="zpColumnItem"> <div id="a2112" data-article-id="2112" data-zpleid="2112" class="articlearea zpwYouTube"> <div class="zpvideo" style="text-align:left"><iframe width="560" height="290" src="https://www.youtube.com/embed/dSkxvi9igqQ?rel=0&vq=hd1080" frameborder="10" allow="autoplay; encrypted-media" allowfullscreen=""></iframe></div> </div> </div> 
173<script>
174	$z(document).ready(function() {
175		$z('.zpwYouTube iframe[src]').each(function() {
176			var url = $z(this).attr("src");
177			var char = "?";
178			if(url.indexOf("?") != -1) {
179				var char = "&";
180			}
181			$z(this).attr("src",url+char+"wmode=transparent");
182		});
183	});
184</script>
184 <div class="zpColumnItem"> <div id="a2110" data-article-id="2110" data-zpleid="2110" class="articlearea zpwYouTube"> <div class="zpvideo" style="text-align:left"><iframe width="560" height="290" src="https://www.youtube.com/embed/qwbMGPkoJmg?rel=0&vq=hd1080" frameborder="10" allow="autoplay; encrypted-media" allowfullscreen=""></iframe></div> </div> </div> 
184<script>
185	$z(document).ready(function() {
186		$z('.zpwYouTube iframe[src]').each(function() {
187			var url = $z(this).attr("src");
188			var char = "?";
189			if(url.indexOf("?") != -1) {
190				var char = "&";
191			}
192			$z(this).attr("src",url+char+"wmode=transparent");
193		});
194	});
195</script>
195 <div class="zpColumnItem"> <div id="a2148" data-article-id="2148" data-zpleid="2148" class="articlearea zpwText"> <p><strong><span style="color: #c4daed">...</span><a href="artworks.html"><span style="color: #c4daed"><span style="color: #c4daed"> </span>explore more intriguing worlds!</span></a></strong></p> </div> </div> <div class="zpColumnItem"> <div id="a1763" data-article-id="1763" data-zpleid="1763" class="articlearea zpwBild popupimage"> <div id="igal1763" class="zpImageGallery" data-kind="singleimage" data-titleshow="1" data-htmltitle="" data-width="auto" data-height="auto" data-bordercolor="default" data-borderwidth="0" data-margin="0" data-titleposition="outside" data-transition="elastic" data-slideshow="0"> <a class="fancybox preloadimg zpnolayoutlinkstyles" href="media/images/molecule3large-large.png" title="" aria-label="Bild in Lightbox öffnen (open image in lightbox)"> <img loading="lazy" class="singleImage" src="media/images/molecule3large.png" width="508" height="210" alt=""> </a> </div> </div> </div> </div> <div class="zpColumn odd zpColumnWidth3 c4 last" style="" data-column-id="444"> <div class="zpColumnItem"> <div id="a1764" data-article-id="1764" data-zpleid="1764" class="articlearea zpwBild popupimage"> <div id="igal1764" class="zpImageGallery" data-kind="singleimage" data-titleshow="1" data-htmltitle="" data-width="auto" data-height="auto" data-bordercolor="default" data-borderwidth="0" data-margin="0" data-titleposition="outside" data-transition="elastic" data-slideshow="0"> <a class="fancybox preloadimg zpnolayoutlinkstyles" href="media/images/molecule2large-large.png" title="" aria-label="Bild in Lightbox öffnen (open image in lightbox)"> <img loading="lazy" class="singleImage" src="media/images/molecule2large.png" width="499" height="210" alt=""> </a> </div> </div> </div> <div class="zpColumnItem"> <div id="a1765" data-article-id="1765" data-zpleid="1765" class="articlearea zpwText"> <h2 style="text-align:center;" data-zpfieldname="headline">Latest news</h2> <ul> <li>[July 25, 2024] </li> </ul> <blockquote> <p><span style="color: #c4daed;">The alien-project video 'Emerging Ecosystems' has been selected as the winner of the&nbsp;</span><a href="https://sites.google.com/view/vcc-2024/2024-winner"><span style="color: #c4daed;"><strong>Virtual Creatures Competition 2024</strong></span></a><span style="color: #c4daed;">. &nbsp; &nbsp;&nbsp;</span> </p> </blockquote> <ul> <li>[August 31, 2023] </li> </ul> <blockquote> <p><span style="color: #c4daed;">Version 4.0 is now available: featuring a genetic system with editor, new cell functions including neural networks, fluid &nbsp;solver, a wider range of statistics function, dynamic parameter zones and much &nbsp;more &nbsp; &nbsp;&nbsp;</span> </p> </blockquote> <ul></ul> <ul> <li>[May 8, 2023] </li> </ul> <blockquote> <p><span style="color: #c4daed;">Beta of version 4.0 available: genome model and editor, neural networks, fluid solver, better statistics function and much more&nbsp; </span></p> <p></p> </blockquote> </div> </div> <div class="zpColumnItem"> <div id="a2150" data-article-id="2150" data-zpleid="2150" class="articlearea zpwText"> <p><a href="archive.html"><span style="color: #c4daed">more...</span></a></p> </div> </div> <div class="zpColumnItem"> <div id="a2194" data-article-id="2194" data-zpleid="2194" class="articlearea zpwText"> <br><br> <p><a href="https://www.youtube.com/channel/UCtotfE3yvG0wwAZ4bDfPGYw"><img title="" class="singleImage" alt="" src="media/images/youtube.png"></a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="https://twitter.com/intent/follow?screen_name=chrx_h"><img src="https://img.shields.io/twitter/url/https/twitter.com/chrxh.svg?style=social&amp;label=Twitter%20%40chrxh"></a> </p> </div> </div> </div> </div> <div class="zpRow standard " data-row-id="581"> <div class="zpColumn odd zpColumnWidth1 c12 first last" style="" data-column-id="705"> <div class="clearx"></div> <div class="zpColumnItem"> <div id="a2125" data-article-id="2125" data-zpleid="2125" class="articlearea zpwTrennlinie zpSO-separator"> <hr class="zpSO-separator" style="display:block;border:none;height:1px;line-height:1px;color:#C4DAED;background-color:#C4DAED;margin-top:30px;margin-bottom:30px;"> </div> </div> </div> </div> </div> </div> </div> <div id="footer" class="container"> <div id="xmenu" class=""> <a class="xmenulink" href="index.html">Home</a> <a class="xmenulink" href="downloads.html">Downloads</a> <a class="xmenulink" href="contact.html">Contact</a> </div> <div id="copyright"> © 2026 artificial life environment </div> </div> <div id="totop" class="container noprint"> <a href="#top" class="zpSO-Uplink-Flat zpnolayoutlinkstyles" title="Nach oben"><span class="zp-sronly">Nach oben</span></a> </div> 
195<script>	
196		function setoverflown(s){
197			var retcode = false;
198			if ( $z("#nav").is(":hover") || ! $z("#nav > ul > li").length ){
199				// mouse is over nav, which opens submenues and might cause the overflow
200				// OR empty nav - needed because for IE an empty #nav == overflown()
201				return false;
202			}
203			
204			$z("#nav > ul").removeClass("overflown");
205			if ( $z("#nav:not(.on) > ul").overflown() ){
206				// nav is already overflown by 1st-Level Menu entries (too many entries)
207				$z("#nav > ul").addClass("overflown");
208				retcode = true;
209			}
210			else{
211				// on non touch devices, check if nav would be overflown horizontally if all submenues are visible (i.e. too many submenues expanding to the right)
212				$z("#nav > ul ul:not(.nocalcoverflow)").css("display", "block");
213				if ( $z("#nav:not(.on) > ul").overflown("x") ){
214					$z("#nav > ul").addClass("overflown");
215					retcode = true;
216				}
217				$z("#nav > ul ul:not(.nocalcoverflow)").css("display", "");
218				
219				// if the previous check didn't already match, check if one of the submenus is higher than the available space in the window because the nav is fixed and wouldn't scroll
220				if ( !retcode && $z("#nav.fixed").length ){
221					$z("#nav.fixed > ul ul:not(.nocalcoverflow)").css("display", "block");
222					$z("#nav.fixed > ul ul:not(.nocalcoverflow)").each(function(){
223						var eltop = $z(this).offset().top - $(window).scrollTop(); // gets the effective top position relative to the window
224						if ( (eltop + $(this).innerHeight()) > $z(window).innerHeight() ){
225							// submenu doesn't fit on screen and would be cut off
226							$z("#nav.fixed > ul").addClass("overflown");
227							retcode = true;
228							$z("#nav.fixed > ul ul:not(.nocalcoverflow)").css("display", "");
229							// exit the each loop early
230							return false;
231						}
232					});
233					$z("#nav.fixed > ul ul:not(.nocalcoverflow)").css("display", "");
234				}
235			}
236			
237			// see if we need to scale to the logo to fit besides the mobile menu-button
238			var availspace = $z("#nav > ul").width() - $z("#nav > ul > li.overflownonly").width();
239			$z("#nav > ul > li.logo").css("max-width", availspace + "px");
240			
241			return retcode;
242		}
243		
244		function stickyNav(topoffset){
245			// make navigations menu sticky when scrolling the menu past the top of the window
246			var scrolltop = $z("body").scrollTop() || (document.documentElement && document.documentElement.scrollTop) || 0;
247			
248			if ( !$z("#nav ul ul:visible").length && scrolltop - topoffset >= 0){
249				$z("body").addClass("padded");
250				$z("#nav").addClass("fixed");
251			}
252			else{
253				$z("body").removeClass("padded");
254				$z("#nav").removeClass("fixed");
255			}
256			// with a little delay, check if the menu gets overflown (i.e. because we're also displaying the logo in the nav now
257			setTimeout(function(){setoverflown();}, 100);
258		}
259		// globals
260		var navOffset;
261		
262		$z(document).ready(function(){
263			// smooth scroll the layout specific go to top link
264			$z("a.zpSO-Uplink-Flat").click(function(e){
265				e.preventDefault();
266				if ( $z(this.hash).length ){
267					$z('html,body').animate({
268							scrollTop: $z(this.hash).offset().top - parseInt($z("body").css("padding-top"))
269					}, 500);
270					window.location.hash = this.hash;
271				}
272			});
273		
274			// switches the Mobile Navigation-Menu on/off, when "Menu" link is clicked.
275			$z("a#mobilenavtoggle").on("click", function(e){
276				e.preventDefault();
277				$z("#nav").toggleClass("on");
278				setoverflown();
279			});	
280			
281			setoverflown();
282			var resizeTimeout = null;
283			$z(window).resize(zpthrottle(100, function(event) {
284				var event = event || window.event;
285				if ( event && $z(event.target.nodeType).length == 0 ){// enable window.resize only for the window object (resizing elements might also trigger window.resize) which doesn't have a nodeType
286					setoverflown();
287				}
288			}));	
289			
290			if ( "false" == "false" && ("true" == "true" || "false" == "true") ){
291				navOffset = $z("#nav:not(.fixed)").offset().top;
292				setTimeout(function(){stickyNav(navOffset);}, 100);
293			}
294		});
295		
296		$z(window).on('load', function(){
297			setTimeout(function(){setoverflown();}, 500);
298			var navheight = 0;
299			if ( "false" == "false" ){
300				navheight = $z("#nav").outerHeight();
301			}
302			// pull anchors below fixed header into visible area
303			if ( location.hash != "" && $z(':target').length ) {
304				$z('html,body').animate({scrollTop: $z(':target').offset().top - navheight - 10 }, 600);
305			}
306			$z("a[href*='#']:not([href='#'])").not(".zpNoScroll").click(function () {
307				var target = $z(this).attr("href");
308				target = target.substring(target.indexOf("#"));
309				if ( $z(target).length ){
310					$z('html,body').animate({scrollTop: $z(target).offset().top - navheight - 10 }, 600);
311				}
312			});
313			
314			if ( "false" == "false" && ("true" == "true" || "false" == "true") ){
315				if ( $z("#nav:not(.fixed)").length ){
316					navOffset = $z("#nav:not(.fixed)").offset().top;
317				}
318				setTimeout(function(){stickyNav(navOffset);}, 500);
319				$z(window).scroll(zpthrottle(100, function(event) {
320					stickyNav(navOffset);
321				}));
322			}
323
324		});
325	</script>
325 
326<!--
327* Layout: Flat Responsive by StS
328* $Id: default.html 2023-03-02 17:23:19 +0100 Stefan S  ec42e40d01882b7ce32f3332ab0d932ac2717c1b $
329-->
330 </body> </html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.