The game with no name

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki
Valmond
Posts: 308
Joined: Thu Apr 12, 2007 3:26 pm

The game with no name

Post by Valmond »

Post updated 27 may 2010

If you want to test the game:

Registration (Account, Character Name and Password):
http://94.23.57.36/index.php
(new since the beginning of 2011)


Now, this is really pre-proto stuff so there are a Lot of things that doesn't work, are ugly etc. etc. but I'm working on it.

And yeah, ingame everything is in French(!), I'm Swedish so I have made the necessary
for 'other language support' but I haven't translated everything and as I'm living
in France well that is how it ended up (great for testing non-ASCII languages though).
The server is also in France (Paris) so I guess overseas clients will have crazy ping etc.

If you are on a 'non french' computer you can edit the shortcuts in the ingame menu (hit ESCAPE).
You can also change screen resolution (game doesn't check if it is supported though) and try fullscreen.

How to play:
directionnal keys (and QZSD on AZERTY keyboard for example) moves you around
Space = jump
If you are stuck, just turn and walk backwards (a debug thing, you can climb any mountain this way for example)

Right click = buy, sell, equip...
Left click = Information

Attack: select enemy and use the shortcuts

If you slide an object out of the backpack onto 'nowhere' it will be destroyed (with a "Do you want to destroy : Shoes" popup).


[edit] some new screenshots:
Image

Image

Image








Original post:

Hi everybody!

First of all, who I am: I'm Swedish but left for France at
the age of 24 and that was in -95 so I'm one of the dinosaurs yes.

Game programming has always been my big hobby and even after a full days work of programming
I'm happy to continue at home (but on My game Just like I want it :) ) so when I found Irrlicht I just
adopted it, a million kudos to the developers, so easy to use and full with features!


So, what's my Project then?

A persistent multiplayer game offcourse!

Well, don't forget it's just a weekend/hobby thing so the goal is to have a very basic "gamelike" app running and not like the next killer MMORPG ;)


Technology:

A simple WAMP server installed on my Windows machine (so it's MySQL for the database) with text in UTF-8
XML and TinyXML for the static data (and mysqldump to export easily from the database to xml with just a click)
C++ (at the moment I just wrote up a PHP site for the registering stuff so I guess PHP too)
Sockets and threads
a millisecond timer
and offcourse Irrlicht!
Freeworld3D for the heightmaps and a SplatShader (+some tools to make the atlas map)
the B3D pipeline for meshes and animations


Here are a couple of screens of the work in progress:

I'm using the really excellent terrain editor (Ridiculously cheap too, like 30$!) FreeWorld3D by Soconne
Image

and the terrain ingame:
Image

You can buy and sell things:
Image


Fight monsters
Image


and loot objects to equip:
Image



Well that's all for today (and probably for some time as the project is going forward quite slowly)!
Last edited by Valmond on Mon Oct 24, 2011 5:21 pm, edited 7 times in total.
Cloudef
Posts: 123
Joined: Wed Dec 03, 2008 9:02 pm
Location: Finland

Post by Cloudef »

This looks like a "next killer MMORPG" for me already :lol:
Seriously really impressing and motivating for me also :wink:
I personally really hate programming with sockets and let others do the dirty work :twisted:

Oh yes, question!
How does that terrain editor export? And is it how hard to adapt optimizations and cullings to the terrain with code?
Valmond
Posts: 308
Joined: Thu Apr 12, 2007 3:26 pm

Post by Valmond »

Thanks!

It exports map layers one by one (Baselayer, any painted layer + alphamasks + lightmap) and the heightmap (you can use anything between 8bits bmp to 32bits raw)

So for this map I have
a BaseLayer of stone
several layers of Grass,Sand,red sand etc
an alphamask for each layer
one lightmap
one heightmap

I have a crude (but working) set of small tools (mainly to rotate and paste images together) to make the atlas map with a batch.

Then a shader that uses the atlas map in combination with the Irrlicht HeightMap (it using the exported heightmap) which means
all culling code is already done (well except for big worlds where you'll need to load up and de-load terrains you've got insight / no longer sees).

The for now not yet overcome problem is the lack of mipmap support (it could be done using shaders 3.0+ but it's
a lot of work and hopefully we will be granted access to mipmaps from inside the engine in a not too far future which will resolve the problem).


for example, here is the atlas map seen in the screenshots:
(reduced, normally it is a 3MB bmp)
Image
BlindSide
Admin
Posts: 2821
Joined: Thu Dec 08, 2005 9:09 am
Location: NZ!

Post by BlindSide »

The for now not yet overcome problem is the lack of mipmap support (it could be done using shaders 3.0+ but it's
a lot of work and hopefully we will be granted access to mipmaps from inside the engine in a not too far future which will resolve the problem).
Sounds like you've been reading Ysaneya's dev reports :wink:
ShadowMapping for Irrlicht!: Get it here
Need help? Come on the IRC!: #irrlicht on irc://irc.freenode.net
Saumane
Posts: 27
Joined: Wed Jul 09, 2008 6:14 pm
Location: Finland

Post by Saumane »

Wait, terrain splatting which supports more than 3 textures? Have you considered sharing it with us? :)
Steel Style
Posts: 168
Joined: Sun Feb 04, 2007 3:30 pm
Location: France

Post by Steel Style »

It's just one atlas texture I think ^^.
Valmond
Posts: 308
Joined: Thu Apr 12, 2007 3:26 pm

Post by Valmond »

>Sounds like you've been reading Ysaneya's dev reports

A google search told me I have read at least one of his pages (one of the 'Journal of Ysaneya') even if I opted for a slight different
method (maybe that's not the page you refer to, if it isn't I'd love a link to it, he's writing interresting stuff) using alphamaps (well I did that because Freeworld3D does it that way :) ).


>Wait, terrain splatting which supports more than 3 textures? Have you considered sharing it with us?

No problem, how can I share this in a good way?

It is quite automatic but some thing must be made 'by hand', the setup ofcourse and the tiling of the textures in the shader (just copy some numbers ).

It goes like this:

Layers are named Base,1.2.3 etc

Freeworld->Custom export which exports
.bmp files for layers
.raw for alpha layers
.raw for the heightmap
.bmp for the lightmap (must be named "Lightmap0")

I got some tools (small .exe:s) that rotate etc those files and pastes them on the final atlas map.
Those tools are about 100% incomplete for other things (than with the Freeworld custom export) but
I'll happily share the projects for them so anyone can change them for their need (MSVC and really small).

then I got this .bat file which 'compiles' the alpha map.
This file also needs to be changed if you want like 11 textures (if you want more than that you'll probably have to squeeze a bit), or 4...


So what kind of terrain editor do you folks use and what do they export?

I can put all of my 'stuff' up on the web but it would be better if it was a bit 'arranged' so it
could suit other exporters too (not necessarily arranged by me ;) ) and in a sort of tutorial form maybe...
Valmond
Posts: 308
Joined: Thu Apr 12, 2007 3:26 pm

Post by Valmond »

@Steel Style

Exact :wink:
Dorth
Posts: 931
Joined: Sat May 26, 2007 11:03 pm

Post by Dorth »

I am deeply moved and impressed by all newcommers who come here and start giving back almost immediately. It seems the time they are a changing ^^

Thank you for your good work and willingness to share back ^^
Nadro
Posts: 1648
Joined: Sun Feb 19, 2006 9:08 am
Location: Warsaw, Poland

Post by Nadro »

Hi, If You need 7 textures for Your terrain You don't need atlases. This is the best solution for it, I think:
7 - color textures
7 - normals for color textures
1 - selector texture
In fixed pipeline We have acces for 8 textures (4 in Irrlicht), but in shader pipeline We have 16 textures, so it's ok ;) I will release IrrCg example with them today or tomorrow.
Library helping with network requests, tasks management, logger etc in desktop and mobile apps: https://github.com/GrupaPracuj/hermes
Valmond
Posts: 308
Joined: Thu Apr 12, 2007 3:26 pm

Post by Valmond »

@Dorth

I'll do what I can :)

@Nadro

I see forward to that !
(can you use 16 textures with irrlicht if you go with a shader?)
Nadro
Posts: 1648
Joined: Sun Feb 19, 2006 9:08 am
Location: Warsaw, Poland

Post by Nadro »

Valmond wrote:@Nadro

I see forward to that !
(can you use 16 textures with irrlicht if you go with a shader?)
Yes I have got worked code for it. In Irrlicht code You have to add only minor changes in SMaterial.h, this is *.patch file for it:

Code: Select all

Index: SMaterial.h
===================================================================
--- SMaterial.h	(revision 2335)
+++ SMaterial.h	(working copy)
@@ -143,6 +143,7 @@
 
 	//! Maximum number of texture an SMaterial can have.
 	const u32 MATERIAL_MAX_TEXTURES = 4;
+	const u32 MATERIAL_MAX_TEXTURES2 = 16;
 
 	//! Struct for holding parameters for a material renderer
 	class SMaterial
@@ -163,7 +164,7 @@
 		SMaterial(const SMaterial& other)
 		{
 			// These pointers are checked during assignment
-			for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
+			for (u32 i=0; i<MATERIAL_MAX_TEXTURES2; ++i)
 				TextureLayer[i].TextureMatrix = 0;
 			*this = other;
 		}
@@ -186,7 +187,7 @@
 			MaterialTypeParam = other.MaterialTypeParam;
 			MaterialTypeParam2 = other.MaterialTypeParam2;
 			Thickness = other.Thickness;
-			for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
+			for (u32 i=0; i<MATERIAL_MAX_TEXTURES2; ++i)
 			{
 				TextureLayer[i] = other.TextureLayer[i];
 			}
@@ -208,7 +209,7 @@
 		}
 
 		//! Texture layer array.
-		SMaterialLayer TextureLayer[MATERIAL_MAX_TEXTURES];
+		SMaterialLayer TextureLayer[MATERIAL_MAX_TEXTURES2];
 
 		//! Type of the material. Specifies how everything is blended together
 		E_MATERIAL_TYPE MaterialType;
@@ -336,7 +337,7 @@
 		\return Texture matrix for texture level i, or identity matrix for levels larger than MATERIAL_MAX_TEXTURES. */
 		const core::matrix4& getTextureMatrix(u32 i) const
 		{
-			if (i<MATERIAL_MAX_TEXTURES)
+			if (i<MATERIAL_MAX_TEXTURES2)
 				return TextureLayer[i].getTextureMatrix();
 			else
 				return core::IdentityMatrix;
@@ -347,7 +348,7 @@
 		\param mat Texture matrix for texture level i. */
 		void setTextureMatrix(u32 i, const core::matrix4& mat)
 		{
-			if (i>=MATERIAL_MAX_TEXTURES)
+			if (i>=MATERIAL_MAX_TEXTURES2)
 				return;
 			TextureLayer[i].setTextureMatrix(mat);
 		}
@@ -357,16 +358,16 @@
 		\return Texture for texture level i, if defined, else 0. */
 		ITexture* getTexture(u32 i) const
 		{
-			return i < MATERIAL_MAX_TEXTURES ? TextureLayer[i].Texture : 0;
+			return i < MATERIAL_MAX_TEXTURES2 ? TextureLayer[i].Texture : 0;
 		}
 
 		//! Sets the i-th texture
-		/** If i>=MATERIAL_MAX_TEXTURES this setting will be ignored.
+		/** If i>=MATERIAL_MAX_TEXTURES2 this setting will be ignored.
 		\param i The desired level.
 		\param tex Texture for texture level i. */
 		void setTexture(u32 i, ITexture* tex)
 		{
-			if (i>=MATERIAL_MAX_TEXTURES)
+			if (i>=MATERIAL_MAX_TEXTURES2)
 				return;
 			TextureLayer[i].Texture = tex;
 		}
@@ -396,23 +397,23 @@
 					FrontfaceCulling = value; break;
 				case EMF_BILINEAR_FILTER:
 				{
-					for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
+					for (u32 i=0; i<MATERIAL_MAX_TEXTURES2; ++i)
 						TextureLayer[i].BilinearFilter = value;
 				}
 				break;
 				case EMF_TRILINEAR_FILTER:
 				{
-					for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
+					for (u32 i=0; i<MATERIAL_MAX_TEXTURES2; ++i)
 						TextureLayer[i].TrilinearFilter = value;
 				}
 				break;
 				case EMF_ANISOTROPIC_FILTER:
 				{
 					if (value)
-						for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
+						for (u32 i=0; i<MATERIAL_MAX_TEXTURES2; ++i)
 							TextureLayer[i].AnisotropicFilter = 0xFF;
 					else
-						for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
+						for (u32 i=0; i<MATERIAL_MAX_TEXTURES2; ++i)
 							TextureLayer[i].AnisotropicFilter = 0;
 				}
 				break;
@@ -422,7 +423,7 @@
 					NormalizeNormals = value; break;
 				case EMF_TEXTURE_WRAP:
 				{
-					for (u32 i=0; i<MATERIAL_MAX_TEXTURES; ++i)
+					for (u32 i=0; i<MATERIAL_MAX_TEXTURES2; ++i)
 						TextureLayer[i].TextureWrap = (E_TEXTURE_CLAMP)value;
 				}
 				break;
@@ -511,7 +512,7 @@
 				NormalizeNormals != b.NormalizeNormals ||
 				AntiAliasing != b.AntiAliasing ||
 				ColorMask != b.ColorMask;
-			for (u32 i=0; (i<MATERIAL_MAX_TEXTURES) && !different; ++i)
+			for (u32 i=0; (i<MATERIAL_MAX_TEXTURES2) && !different; ++i)
 			{
 				different |= (TextureLayer[i] != b.TextureLayer[i]);
 			}
I don't replace standard MATERIAL_MAX_TEXTURES variable, so other Irrlicht core function work fine, based on standard 4 textures in fixed pipeline. But now I have bigger array with textures, and I can use them in my shader via IrrCg (I implemented in it, functions for support more than 4 textures). In my engine I will use 12 color textures + 12 normal textures + 3 selector textures (need 2 passes).
Last edited by Nadro on Mon Apr 20, 2009 2:33 pm, edited 1 time in total.
Library helping with network requests, tasks management, logger etc in desktop and mobile apps: https://github.com/GrupaPracuj/hermes
Valmond
Posts: 308
Joined: Thu Apr 12, 2007 3:26 pm

Post by Valmond »

This is very interesting, would this work with shaders lower than 2.0?

(and how do you apply the patch? I'v already done one patch for the meshbuffer copy but I did it by hand :p)
Nadro
Posts: 1648
Joined: Sun Feb 19, 2006 9:08 am
Location: Warsaw, Poland

Post by Nadro »

OK, I've done short example, You can download it from:
http://www.sendspace.com/file/8k34gi
Image

It's require SM2.0+ (a or b), because it need 16 registers, standard version of SM2.0 support up to 12 registers, so up to 12 textures, eg 3 selectors + 9 colors, so it's enought in many situations. I don't

Here I have 4 selector textures (I don't use alpha channel only RGB, and 12 color textures, so 16 textures in one pass on one node). Of course, textures can be blurring on edges, I have sharp edges because I don't have much time and I create texture selectors very quick :) Pixel Shader 1.4 support up to 6 textures, so it isn't enought, I think.

I send new version of IrrCg on SVN, examples etc. I will send tomorrow.
Last edited by Nadro on Tue Apr 21, 2009 12:27 pm, edited 2 times in total.
Library helping with network requests, tasks management, logger etc in desktop and mobile apps: https://github.com/GrupaPracuj/hermes
grumpymonkey
Posts: 222
Joined: Mon Jan 19, 2009 10:03 pm
Location: Miami, Florida
Contact:

Post by grumpymonkey »

looks great! just make sure it doesnt turn into a runescape clone or anything like that for two reaons:
1. runescape sucks
2. runescape has a lot of features which will take up a lot of your time and in the end, no one will play your game since they will have to download it whereas runescape can be played online.(it still sucks though >:O)

still. by the screenshots I give it a 4.5/6, good job :D
Image
Post Reply