I'm seriously considering making a spiritual successor.

Thothie

Administrator
Staff member
Administrator
Moderator
Lead MSC Developer
MSC Developer
Joined
Apr 8, 2005
Messages
16,256
Reaction score
289
Location
lost
Well, that's the closest thing I've seen to progress since February. Granted, under Source, you don't need any such thing - Steam ID's are handy that way, at least.

Skillasaur has the mapping skillz - I dunno if there's some way to convert the Source map materials we have to something Unity can handle. After that, ya just need an incredibly prolific modeler.

ner0sense said:
zeus9860 said:
It's time to get your butts back in ms:c! F*ck MS:S for now! :twisted:

^ This.

I should explain that MSS hasn't been hampering MSC much, if at all. It's not been a matter of redirecting effort. True, Orochi can model, but the sort of models we need at the moment (ie. from scratch) are out of his field, and our code makes him vomit. Rickler was the only person who developed for MSS that actually took time out from MSC to do so, but by that time, I think he was pretty sick of dealing with the MSC drama, and wouldn't have done anything more for us anyways (we were lucky to get as much out of him as we did).
 

Dridje

Epic Adventurer
MSC Developer
Socialist Guild
Alpha Tester
Joined
Feb 2, 2007
Messages
2,243
Reaction score
63
So uh... when are we, as a community, going to decide on a name change?
 

Xeropace

New Adventurer
MSC Developer
MSU Developer
Joined
Aug 23, 2005
Messages
407
Reaction score
3
I wasn't aware there were plans to rename? Is Master Sword too similar to the iconic sword from Legend of Zelda games D:?
 

Thothie

Administrator
Staff member
Administrator
Moderator
Lead MSC Developer
MSC Developer
Joined
Apr 8, 2005
Messages
16,256
Reaction score
289
Location
lost
Think he meant other than "Master Sword: Source" - though every once in while someone brings that up, but meh, "iz tradition!".

"Master Sword: Unity" would be the obvious, but it's still kinda jumping the gun, at the moment, ya'd still need a team and a framework to get beyond the playing with the idea stage.
 

Xeropace

New Adventurer
MSC Developer
MSU Developer
Joined
Aug 23, 2005
Messages
407
Reaction score
3
I actually call it MS:U for Unity/United at the moment :p

But yes, I'm still just playing around with it. Spent the last four hours reading about TCP/UDP servers in C#... Turns out it's not easy. I'm hoping when/if I get that working and can have a synced master server <-> game server <-> players, then it might start to look more promising. I.e. at that point it becomes the task of making assets and scripting.
 

Thothie

Administrator
Staff member
Administrator
Moderator
Lead MSC Developer
MSC Developer
Joined
Apr 8, 2005
Messages
16,256
Reaction score
289
Location
lost
Our central sever is actually handled by a very simple separate program.

...and I hate that I find myself defending Source, after spending so many hours tearing it down, but one advantage all that client<->server notecode stuff is already worked out. You could, I suppose, browse the SDK and learn from the code.
 

Jelly

Adventurer
MSC Developer
RiP
Joined
Nov 25, 2005
Messages
1,902
Reaction score
12
Age
28
Location
You are here --> X
Unity also handles master-servers with a separate program. Third party options are also available.
There's supposed to be some sort of NAT punchthrough but I could never get that working.
 

Xeropace

New Adventurer
MSC Developer
MSU Developer
Joined
Aug 23, 2005
Messages
407
Reaction score
3
The master server is giving me no issues, that's a simple hosted site.

It's the Game Serve <-> Clients I can't get working, -at all-... Unity's default networking doesn't work, it just says, "Are you sure there's a server at this address?" (seriously, that's the error message)

I haven't successfully sent even a byte of information. I just can't get it to work. I've tried with the manual UDP/TCP Clients that C# has but they're complicated. You have to use background/tasks or threads as the network communication has to be constantly listening without interrupting the main game loop.

I know a guy who is going to release a networking solution very soon (this week), that hopefully will be ideal for this. I tried a free one called Photon but it had so many things to set up that I'd never need, so I didn't continue =/
 

Jelly

Adventurer
MSC Developer
RiP
Joined
Nov 25, 2005
Messages
1,902
Reaction score
12
Age
28
Location
You are here --> X
I've managed to send bytes to update player commands and position such that multiplayer movement is possible. I lost the code however.
I could take a look at yours if you wanted, but it'd probably be better to take advice from someone who is releasing a networking solution and actually knows what they are doing.
 

Thothie

Administrator
Staff member
Administrator
Moderator
Lead MSC Developer
MSC Developer
Joined
Apr 8, 2005
Messages
16,256
Reaction score
289
Location
lost
Xeropace said:
It's the Game Serve <-> Clients I can't get working, -at all-... Unity's default networking doesn't work, it just says, "Are you sure there's a server at this address?" (seriously, that's the error message)
Sure it's not simply a router/firewall issue? Ya manage to host some other server/service on the same port on the same machine?
 

Xeropace

New Adventurer
MSC Developer
MSU Developer
Joined
Aug 23, 2005
Messages
407
Reaction score
3
I did wonder that. My first test was hosting and connecting on Localhost though (client and server on same machine). I tried a whole selection of ports. This machine is in fact in the DMZ and has all traffic routed towards it.

So I tried from my other PC over LAN and still nothing. Can ping it fine, can connect to TS3 on the same ports (I never hosted both at once, either TS or Unity).

I've found an open source UDP Server/Client connection for Unity and I'm going to give that a try. Was going to do it earlier but ended up playing Magicka with the fiancé for about 5 hours straight. I should really spend the rest of the week revising for my driving theory test as I've got that on Saturday (yeah I never learnt to drive :p)
 

Thothie

Administrator
Staff member
Administrator
Moderator
Lead MSC Developer
MSC Developer
Joined
Apr 8, 2005
Messages
16,256
Reaction score
289
Location
lost
Well, then I'd suggest butting heads with Jelly, as mentioned on the previous page, and/or haunting the Unity forums a bit.

Xeropace said:
Oh dear... I've been seriously considering adapting that system into a series of crystals you stick into a magic staff in or bracelets as a sort of alternative magic system, as FER was kinda suggesting with rings, but I've not gotten around to figuring out the details. (Sans the never-ending-comedy that comes from Magicka's friendly fire, of course.)
 

Xeropace

New Adventurer
MSC Developer
MSU Developer
Joined
Aug 23, 2005
Messages
407
Reaction score
3
I did play with a game idea a while back, where you got different coloured orbs for spells. Then you could socket them in to your weapon to give you access to different spells depending on your combination. Kind of like Materia in Final Fantasy 7. I've forgotten the specifics as that never got past a pen and paper idea.

I will give networking a go tonight, for reals, this time.
 

Xeropace

New Adventurer
MSC Developer
MSU Developer
Joined
Aug 23, 2005
Messages
407
Reaction score
3
Thanks for the link, I'm collecting a lot of tutorials/resources for when I actually start the game coding :p

As for yesterday: I did finally download and build a networking Library and I went through all the tutorial/examples and they all worked. So this is a good start. I didn't have time to actually try making my own though so I will attempt this tonight.

I also had another idea/thought yesterday when talking to Skilla.

Is there a way to import a .bsp (or .map if someone still has them) to Unity? Someone has done it for Quake 3 maps but the .bsp format for Half-Life is different. There is an online resource for how .bsps are stored but I fell short. So does anyone here know about the actual data structure that goes in to a .bsp? If I can someone extract all the Verts/UVs/Indexes/etc, I could technically recreate them via code.

I did try using Crafty (.bsp viewer) to import Edana and export it as a .OBJ, to then import that in to Blender, to then export that for use with Unity... It didn't work. None of the textures were visible in Crafty (Even though I loaded all the requires .wads and other files), it said a load of materials were missing (ones that were in edana.txt by the looks of it, no idea what this file does).

Obviously I wouldn't want to just import MS:C maps but as a starter, it would be great.
 

Thothie

Administrator
Staff member
Administrator
Moderator
Lead MSC Developer
MSC Developer
Joined
Apr 8, 2005
Messages
16,256
Reaction score
289
Location
lost
Part of the problem with Half-Life1 BSP's, is not all the data used in their construction is within them, so you aren't very likely to be able to re-render them without direct access to the engine that normally does so... And that's closed source.

However... .MAP files, that the various Half-Life compile tools use, are also used by the various incarnations of Quake, and do contain all of the relevant data, save for textures and external materials.

Now, I've tried converting said files for use in Quake1 editors (which they should be damn close to), but I've not had a whole lotta luck. Other folks, however, seem to have, and I suspect the MAP format likely hasn't changed all that much into Quake 3 (just, judging by the nature of the map layouts).

Map files are plain text readable, so if you put some effort into it (and avoid whatever screw up I seem to keep reproducing), you should be able interpret the format.

Dunno if this tiny example will help or not:
Code:
{
"classname" "worldspawn"
"maptitle" "My Map Name"
"mapdesc" "A brief description of my map"
"weather" "clear;clear;clear"
"map_music_idle_file" "none"
"map_music_combat_file" "none"
"MaxRange" "4096"
"mapversion" "220"
"wad" "\hldev\wads\allinone_fixed.wad;\hldev\wads\thothie.wad"
{
( -256 256 -192 ) ( 256 256 -192 ) ( 256 -256 -192 ) WALL_TEMPLE1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( -256 -256 -256 ) ( 256 -256 -256 ) ( 256 256 -256 ) WALL_TEMPLE1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( -256 256 -192 ) ( -256 -256 -192 ) ( -256 -256 -256 ) WALL_TEMPLE1 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 256 256 -256 ) ( 256 -256 -256 ) ( 256 -256 -192 ) WALL_TEMPLE1 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 256 256 -192 ) ( -256 256 -192 ) ( -256 256 -256 ) WALL_TEMPLE1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 256 -256 -256 ) ( -256 -256 -256 ) ( -256 -256 -192 ) WALL_TEMPLE1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
}
{
( -256 -128 64 ) ( -128 -128 64 ) ( -128 -256 64 ) WALL_TEMPLE1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( -256 -256 -64 ) ( -128 -256 -64 ) ( -128 -128 -64 ) WALL_TEMPLE1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( -256 -128 64 ) ( -256 -256 64 ) ( -256 -256 -64 ) WALL_TEMPLE4 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -128 -128 -64 ) ( -128 -256 -64 ) ( -128 -256 64 ) WALL_TEMPLE3 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -128 -128 64 ) ( -256 -128 64 ) ( -256 -128 -64 ) WALL_TEMPLE3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( -128 -256 -64 ) ( -256 -256 -64 ) ( -256 -256 64 ) WALL_TEMPLE4 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
}
}
{
"classname" "trigger_once"
"targetname" "this is a non-solid invisible entity"
"zhlt_invisible" "1"
{
( 128 128 -64 ) ( 192 128 -64 ) ( 192 64 -64 ) AAA_ONCE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( 128 64 -128 ) ( 192 64 -128 ) ( 192 128 -128 ) AAA_ONCE [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( 128 128 -64 ) ( 128 64 -64 ) ( 128 64 -128 ) AAA_ONCE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 192 128 -128 ) ( 192 64 -128 ) ( 192 64 -64 ) AAA_ONCE [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 192 128 -64 ) ( 128 128 -64 ) ( 128 128 -128 ) AAA_ONCE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 192 64 -128 ) ( 128 64 -128 ) ( 128 64 -64 ) AAA_ONCE [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
}
}
{
"classname" "func_wall"
"note" "this is a solid and visible entity"
"rendercolor" "0 0 0"
{
( 128 -64 -64 ) ( 192 -64 -64 ) ( 192 -128 -64 ) ABV_COB1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( 128 -128 -128 ) ( 192 -128 -128 ) ( 192 -64 -128 ) ABV_COB1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 
( 128 -64 -64 ) ( 128 -128 -64 ) ( 128 -128 -128 ) ABV_COB1 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 192 -64 -128 ) ( 192 -128 -128 ) ( 192 -128 -64 ) ABV_COB1 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 192 -64 -64 ) ( 128 -64 -64 ) ( 128 -64 -128 ) ABV_COB1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
( 192 -128 -128 ) ( 128 -128 -128 ) ( 128 -128 -64 ) ABV_COB1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 
}
}
{
"classname" "func_illusionary"
"note" "this is a non-solid, visible entity, with a texture stretched over it"
"rendermode" "4"
"renderamt" "255"
"rendercolor" "0 0 0"
"skin" "-1"
{
( 128 64 -128 ) ( 192 64 -128 ) ( 192 -64 -128 ) {XENO_17C [ 1 0 0 -192 ] [ 0 -1 0 96 ] 0 0.333333 0.666667 
( 128 -64 -192 ) ( 192 -64 -192 ) ( 192 64 -192 ) {XENO_17C [ 1 0 0 -192 ] [ 0 -1 0 96 ] 0 0.333333 0.666667 
( 128 64 -128 ) ( 128 -64 -128 ) ( 128 -64 -192 ) {XENO_17C [ 0 1 0 96 ] [ 0 0 -1 -192 ] 0 0.666667 0.333333 
( 192 64 -192 ) ( 192 -64 -192 ) ( 192 -64 -128 ) {XENO_17C [ 0 1 0 96 ] [ 0 0 -1 -192 ] 0 0.666667 0.333333 
( 192 64 -128 ) ( 128 64 -128 ) ( 128 64 -192 ) {XENO_17C [ 1 0 0 -192 ] [ 0 0 -1 -192 ] 0 0.333333 0.333333 
( 192 -64 -192 ) ( 128 -64 -192 ) ( 128 -64 -128 ) {XENO_17C [ 1 0 0 -192 ] [ 0 0 -1 -192 ] 0 0.333333 0.333333 
}
}
{
"classname" "ms_player_begin"
"angles" "0 0 0"
"note" "this is a point entity"
"origin" "-13 -30 -128"
}
{
"classname" "light"
"_light" "255 255 128 200"
"_fade" "1.0"
"origin" "-109 -7 -128"
}

map_example.jpg

The map contains two solids: the floor, with a single texture [wall_temple1], and a box in the air with three textures [wall_temple3, wall_temple4, wall_temple1]. It contains four brush entities, of types noted in the code, one with a texture stretched, and two point entities, one of which is a light, both similarly noted.

If you can compare/contrast that vector layout with a MAP file from Quake3, you maybe able to work out a script to convert between them. (Or, if Unity has a plain text map format, maybe directly to that.)

Mind you, this map isn't closed, so it might not display correctly (plus, you'll need to substitute the textures - they are all 128x128).

Now, how ugly Half-Life 1 maps will be under Unity, and whether you want to port maps directly from MSC, well, that's another thing.
 

FER

New Adventurer
MSC Developer
RiP
Joined
Sep 16, 2006
Messages
2,758
Reaction score
0
Age
33
Location
on Belser's army
I think unity maps are comprised of models with the exception of the terrain.

What you could do it try to find on google for a method to convert HL maps into model files, and I believe theres some answer out there.

Or just get a modeller to recreate the maps while using the old ones as reference.
 

Xeropace

New Adventurer
MSC Developer
MSU Developer
Joined
Aug 23, 2005
Messages
407
Reaction score
3
Oh wow, MAP formats are easily readable then, both by eye and code. I can almost predict what they mean. There's a lot that would have to be ignored to begin with (all the func stuff, lights, spawners, etc), ideally I just want to grab the level geometry and texturing, which actually looks present.

By the looks of it, each object is contained in it's own structure of a first set of curly braces, that defines all the objects property in string pairs. Then if the entity has a brush, it seems it stores all the that data in another list of { }.

I'm assuming each entry in this list is a single Triangle? I'm unsure what Hammer would call this, but the numbers looks joyfully familiar to me. It seems to be:

( x1 y1 z1 ) ( x2 y2 z2 ) ( x3 y3 z3 ) texture_name [ uvx1 uvy1 ? ?] [ uvx2 uvy2 ? ?] ? ? ?

I assume the ? ? in the brackets are to do with offsetting the texture in the x/y maybe... The final three ? ? ? I don't really know at all. I only recognise the first bits as it's similar to how 3D Models are stored.

I then assume the renderer works like any renderer and draws a single triangle in world space using the xyz coordinates.


FER said:
I think unity maps are comprised of models with the exception of the terrain.

What you could do it try to find on google for a method to convert HL maps into model files, and I believe theres some answer out there.

Or just get a modeller to recreate the maps while using the old ones as reference.

That's correct. Even the Terrain is just a glorified model, the only special thing about terrain is it uses a HeightMap collider as opposed to a Mesh Collider. Well, that and it supports massive draw distances as it has various Levels of Detail and automatic support for batching things like trees/stones/etc but that's more for open world Skyrim style terrains.

I have been able to convert a Half-Life Map to a model but it's wouldn't import in to Unity. Maybe I was trying a bad map but it was creating a big mess. Besides, the map wouldn't work anyway, it'd have zero colliders and I'd have to manually recreate every collider as a new model/construct it out of primitives. Also, the texturing is totally lost too.

The interesting part about that .map file is how separate objects are contained in their own list. This means I could easily import each object, including a collider. With a bit more work, it seems entirely possible to also import all the texturing too.

Though, bottom line is: This will be extra time spent on something I may not even use :p I did find a rather cool looking plugin that allows you to create levels in Unity similar to Hammer. As creating a stage's world out of lots of models is really unintuitive, it's fine for decoration, but the stage itself? Doesn't work very well. Plus manually unwrapping an object for multiple textures is incredibly boring and takes a long time. This Hammer style world crafting just lets you select a face and texture it how you please.
 

Thothie

Administrator
Staff member
Administrator
Moderator
Lead MSC Developer
MSC Developer
Joined
Apr 8, 2005
Messages
16,256
Reaction score
289
Location
lost
Xeropace said:
I assume the ? ? in the brackets are to do with offsetting the texture in the x/y maybe... The final three ? ? ? I don't really know at all. I only recognise the first bits as it's similar to how 3D Models are stored.
Suspect it's texture scaling, but again, you'd have to compare it to a Quake 3 or Unity format.

If Unity is model based, meh... I've managed to turn some map structures into models in the past, but really, it only works on exposed simple structures... A catapult, or very simple building, you made in Hammer may work, but exporting a whole world, tends to lead to a big ol mess. Additionally, the appearance of Half-Life maps are very dependant on light maps (and MSC maps, in particular, tend to be heavily reliant on texture based lighting). They don't work very well as raw models.

But, if you have something that can convert Quake3 maps well... Though, given that Quake3 maps are every bit as planar based as Half-Life maps, I dunno how such a thing could be.

If such a thing is possible, however, it'd greatly accelerate any effort if you say, wanted to simply port MSC to a new, more stable and open engine.
 

Xeropace

New Adventurer
MSC Developer
MSU Developer
Joined
Aug 23, 2005
Messages
407
Reaction score
3
Well I've got four days off starting tomorrow and not much planned so I will have some time to dig into both networking and reading .MAP data. Is there any chance I could get that WALL_TEMPLE1 texture, Thothie? (I probably already have it if it's part of MS:C thinking about it) It'd just make it easier to spot what's going wrong/right when texturing the model. I'm pretty sure I could map out the geometry of a .MAP file after an hour or so of work. The texturing will most likely take longer as it's foreign territory.

Yesterday I successfully hosted a server and connected to it but that was it. So at least I'm getting somewhere, albeit slowly.
 

Thothie

Administrator
Staff member
Administrator
Moderator
Lead MSC Developer
MSC Developer
Joined
Apr 8, 2005
Messages
16,256
Reaction score
289
Location
lost
http://www.thothie.com/msc_dev4/example ... xtures.rar
^ All the textures used... I was gonna say it doesn't matter - just use any 128x128 textures, but then I realized they aren't actually all that size. (Though, given that scaling works by percent, it may not *really* matter.)

Also included a wad with them, for no apparent reason. (Maybe the converter or editor can read Wads, IDK.)
 

Xeropace

New Adventurer
MSC Developer
MSU Developer
Joined
Aug 23, 2005
Messages
407
Reaction score
3
Thanks Thothie, much appreciated.

Jelly said:
Might I ask which networking library you are using, Xeropace?

Sure, it's called udpkit. I talk to the guy who wrote it on IRC and he's given me some help to get started. He's the same guy who will be releasing a Unity specific version with lots of built in features for games, should be out in a couple of days.
 

ceriux

Adventurer
Joined
Feb 17, 2005
Messages
2,297
Reaction score
5
Age
32
Location
At my computer :)
quake 1 can run half-life 1 maps. you should look at the inside3d.com forums. they're primarly programmers and if you wish to import half-life 1 maps to unity they might be a good place to start looking considering they've added them to the quake 1 engines. (darkplaces - lordhavok) , (FTE - Spike). you could even talk to baker, but you'd have better luck getting a hold of him over at quakeone.com
 
Top