Cataclysm: Metal Gear Solid

[quote=“KA101, post:20, topic:528”]Never did get an answer: what file formats does this support for sounds?

Thanks much; if nothing else, having a visible “you’ve been seen” alert for the player such as the ! would be useful.[/quote]

All the sound files are in “./data/audio” folder. You can see most of them are .wav, and some, which I bothered to convert due to size or other reasons are in .ogg format. If you wanted to use current binary to experiment with replacing music and/or sound effects you would need to replace files in whatever format they are now, and of course rename your media files to exact the same name of the music/sound effect you want to replace. As far as implementation goes it’s SDL, so MP3 and other major formats can be used too, but perhaps more importantly SDL means all of it can easily be ported to Linux as well.

OK, that helps. Thanks. Connection here can get sporadic so wasn’t going to DL just to check formatting. Will hopefully take a look over the weekend.

(Renaming files is OK; I can read C+±-kinda–but compiling is another story.)

Of all the things. Anyway, why do think 10 points is overpowered? Makes the game too easy?[/quote]
Shit. Thought you were someone who didn’t make this thread.
I still love you
Add more stuff though ;.;
I will pay you in hugs

Yeah, version control sits underneath whatever coding environment you use. A good IDE may have support for the major VCSes built in. (I’m not really an IDE guy, unless you count EMACS)

They would first need to give me access to the main branch if I was to synchronise and merge the changes myself, isn't that so?

Nah, with git you can just make your own branch off the main trunk, then they can pull from your branch. You should probably read up on how git works, it’s awesome for managing several related codepaths…

I documented and explained all the previous changes and bug-fixes. Most important parts did in fact get merged several weeks ago by one of the devs, he put it in a side branch of their github, it's "lazycat" branch.However, even those most critical and important changes and bug-fixes still didn't make it to the main branch. Instead, a new version was released with even more bugs. What in the world was I supposed to do about it, what more? I already ended up wasting far more time than necessary just to keep the code synchronised on my end, it's up to them to synchronise it with the main branch, or let me do it.

Ah, I missed that hey had done that. You should take up maintaining that lazycat branch, then, and code onto that directly. It shouldn’t require much work at all to keep code synchronized, however, that’s kind of the main point of using a distributed VCS like git. It does 99% of the work for you.

How could have I made my changes "inside of git"? Besides, it's them who said it would be fine if just keep uploading on Mediafire. What "reformatting" are you talking about, what's the problem? In any case, is there anything preventing you or anyone to use VCS now? You think it would make something easier, can you show me?

If they’re fine with uploading on Mediafire, that’s great, but it kind of does you a disservice in the long run.
(I was under the impression you had reformatted your code to your own standard so it no longer matched the layour of the original code, which would make creating patches to move into git a more laborious process. Maybe I’m mistaken about that, I suppose it’s not really important.)

Using a VCS is a way of tracking your own changes, it sits under your IDE kind of like a filesystem layer. To “do things in git,” basically you’ll use git to make a local copy of the lazycat branch and then work on it just like you normally would. Once in a while you stop to roll a change up into a “commit” and send it off to the lazycat branch on github. Once it’s there, everyone can see it and it can be pulled and merged, no muss, no fuss.

As for what VCS is good for, skim through svn - Why should I use version control? - Stack Overflow
In short, version control is about as important and useful as a debugger or an IDE; you probably shouldn’t write anything more complex than a 50 line bash script without it.

There are youtube videos and such on setting up git and running it on windows, too.

Hmm. Looking around for you, I’ve just discovered git does some nice things relevant to this discussion, which I didn’t even know about. http://tomayko.com/writings/the-thing-about-git
I’m accustomed to the strict “make a change; commit; repeat” of the Subversion days. Subversion (SVN) was king back in the day, but my experiences with git so far have made me a convert. (I just wish I had more time to code.)

It’s them who need to do the merge, I don’t even have access, so where is the need for me to know anything about git?

Ah, I missed that hey had done that. You should take up maintaining that lazycat branch, then, and code onto that directly. It shouldn't require much work at all to keep code synchronized, however, that's kind of the main point of using a distributed VCS like git. It does 99% of the work for you.

There it is lazycat branch on the github and there it is main branch, can you please press that auto-magical button and show me how can you merge the two?

If they're fine with uploading on Mediafire, that's great, but it kind of does you a disservice in the long run.

I need to give them the code somehow, it’s all the same to me. I only care whether the changes are actually merged with the main branch, or not, because until merged I’m forced to waste more time than necessary in order to keep my changes compatible with the latest updates, regardless of where the files are, github or not.

(I was under the impression you had reformatted your code to your own standard so it no longer matched the layour of the original code, which would make creating patches to move into git a more laborious process. Maybe I'm mistaken about that, I suppose it's not really important.)

White spaces, line breaks and indentations are functionally irrelevant. There is properly working code, and then there is code with bugs, that’s the only difference that matters. It’s non-issue, unless someone is fussy about trivial cosmetics of the source code, but I don’t see how could that be when it’s already a mess full of different styles much of which are rather ugly or plain unreadable, and that’s the least problem with it.

Using a VCS is a way of tracking your own changes, it sits under your IDE kind of like a filesystem layer. To "do things in git," basically you'll use git to make a local copy of the lazycat branch and then work on it just like you normally would. Once in a while you stop to roll a change up into a "commit" and send it off to the lazycat branch on github. Once it's there, everyone can see it and it can be pulled and merged, no muss, no fuss.

No muss, no fuss… there it is lazycat branch on the github, can you merge it?

As for what VCS is good for, skim through http://stackoverflow.com/questions/1408450/why-should-i-use-version-control In short, version control is about as important and useful as a debugger or an IDE; you probably shouldn't write anything more complex than a 50 line bash script without it.

There are youtube videos and such on setting up git and running it on windows, too.

Hmm. Looking around for you, I’ve just discovered git does some nice things relevant to this discussion, which I didn’t even know about. http://tomayko.com/writings/the-thing-about-git
I’m accustomed to the strict “make a change; commit; repeat” of the Subversion days. Subversion (SVN) was king back in the day, but my experiences with git so far have made me a convert. (I just wish I had more time to code.)

It is one thing to commit changes directly to the main branch and it’s different thing to merge two branches. If I had access to commit changes directly then of course everything would be synchronised and merged by itself, github or not. The problem is to apply the same changes to different (later) version when there have been changes in the code to which the patch is supposed to apply. See if you can merge lazycat with the main branch now. It took me at least four hours to do it by hand, line by line. How quickly can you do it with git, or with any of the tools you told me about? Can you actually do it at all? I challenge you, show me!

Making commits to the main branch is EXACTLY like merging two branches; we take your modifications (commits) you made on your branch and put them on the main branch.

How do you think we merge modifications people do into the main branch? Of course it’s doable, you can do it in 10 minutes if you have a metric ton of changes and want to update the fork you have to the latest version. And sometimes you don’t even need to do anything because recent changes don’t conflict with your changes. It’s as simple as if you changed this line, either someone changed it too, or no one changed it. In the first case you have to fix it / decide which to keep, and in the later there is nothing to do. From this stems the whole argument on reformatting the code; you changed stuff but you didn’t actually do anything: Because git actually cares about spaces and stuff.

Anyway. you don’t need “access” to the main branch, anyone can do this, you can just make a fork of Cataclysm yourself and do modifications on that, and we can see what modifications you have done, and you can update your code to the latest version when ever you want, with very little effort, and once your stuff is ready, we can take it and put it in the main branch.

No one is going to do any of your work for you, no one is going to merge anything you have done until it’s on git.

Stop claiming you don’t need to know anything about git then bashing it saying what it can/cant do, because you in fact know nothing about git.

[quote=“Tase, post:26, topic:528”]Making commits to the main branch is EXACTLY like merging two branches; we take your modifications (commits) you made on your branch and put them on the main branch.

How do you think we merge modifications people do into the main branch? Of course it’s doable, you can do it in 10 minutes if you have a metric ton of changes and want to update the fork you have to the latest version. And sometimes you don’t even need to do anything because recent changes don’t conflict with your changes. It’s as simple as if you changed this line, either someone changed it too, or no one changed it. In the first case you have to fix it / decide which to keep, and in the later there is nothing to do.[/quote]

Sure it’s doable, I did it several times without git or anything, and you did it once, who knows how. In any case it was easy then, the only question is how easy it is to merge now, after there have been changes and additions in the main branch relating to the same code my code was supposed to patch.

From this stems the whole argument on reformatting the code; you changed stuff but you didn't actually do anything: Because git actually cares about spaces and stuff.

Can you give me some example of how is formatting preventing you to do anything? How does it matter, exactly?

Anyway. you don't need "access" to the main branch, anyone can do this, you can just make a fork of Cataclysm yourself and do modifications on that, and we can see what modifications you have done, and you can update your code to the latest version when ever you want, with very little effort, and once your stuff is ready, we can take it and put it in the main branch.

You can upload it to git yourself, like you did.

Little effort? I’d like to see that, and here it is:

Please show me how do you merge it with the main branch now. What are we waiting for anyway? The code is ready, it fixes the most horrific bugs, it works properly. Isn’t it obvious? It is the code in the main branch that is not “ready”. Don’t you see constant crashes? Don’t you see Windows binary is glitching and freezing instead of animating, and Linux one overflowing keyboard buffer? That’s so not ready it shouldn’t even be released to public.

No one is going to do any of your work for you, no one is going to merge anything you have done until it's on git.

Actually, I did work for you, and if I had access I would have merge it for you as well. But you want of me to maintain my own git, for some strange reason, when you already have one and can upload it yourself in a matter of seconds. Huh? And that’s the problem here, ten seconds upload is what’s preventing you to merge my changes and fix your bugs? It makes no sense. What’s more it actually is on git, your git, you put it there yourself:

So, what’s the problem then, why hasn’t it been merged yet?

Stop claiming you don't need to know anything about git then bashing it saying what it can/cant do, because you in fact know nothing about git.

Go ahead and show us, here it is:

Can you merge it with the main branch now? Easily? Automatically? Let’s see.

Anyway, consider it my gift to you. It’s your code now, do with it whatever you please.

Amazing changes, Lazycat.

I would love to see other folks to be less aggressive towards you then, you help to improve the game and you get harsh verbal beating for that >.<

I think so too. I think some of the changes make the game hundreds of times better, plus the game is stable even with random NPCs. Anyway, here comes more… see the next post. Metal Gear is here, it’s all almost done. Just to script some missions and that’s it. There will be updates to NPCs as some missions will require to work with them in a team: attacking with them, rescuing them and keeping them alive, beside one-man missions revolving around collecting and building items, reaching certain point in a given time, finding and destroying things, and stuff like that.

DOWNLOAD (12. April, 2013): Cataclysm-MGS_rev19

  • Metal Gear ZK-Mk.3
  • enable/disable turrets individually
  • show available ammo for mounted turrets
  • show fuel tanks charges in constr. menu
  • range based mounted turrets targeting
  • prevent burst turrets shoot player
  • new flame bursts and trail effects
  • new explosion animations
  • mountable M72 LAW rocket launcher
  • animation for rockets smoke trails
  • beer also in cans not just in kegs
  • added moon phase indicator
  • extended monsters reaction to noise
  • read with wielded torch and candle light
  • added range info when looking around
  • some bugfixes from DDA v0.4 main branch
  • some additions from DDA v0.4 main branch
  • water sound effects: splash, swim, dive
  • game over will not delete save-file
  • combined looking around and shift-view
  • fixed remaining targeting bugs

some examples…


top: bigger fire with more spread for flamethrower
middle: individual turrets in vehicle control screen
bottom: more colourful new explosions animation


show fuel tanks charges and available ammo for mounted turrets


if you ever wondered why is so bright in the middle of the night

By the way, load saved game if you don’t want to search for the Meatal Gear. It’s fully loaded and operational, it can destroy whole population of zombies in an average city, and when you run out of ammo there is still power in it to go through about 20 houses before stopping down. Give it a test-drive and let me know what you think.

Tip: flamethrower is the most useful for defensive tactics, that is when moving backward with targets in front, or moving forward with targets behind you. If enabled otherwise you might end up dodging fires in your path, getting too hot or damaging the vehicle. Use rocket launcher for most situations, for further away targets and groups of targets. Save plasma rifle and M247 ammo for closer targets, or use the flamethrower wisely.

This is exactly the class of problem that version control is designed for. Far better programmers than anyone in this thread have worked for decades to develop the version control concept. Give it a try, and you’ll be kicking yourself for not having done it years ago. Git automates 99% of the work of tracking and merging different codepaths. (Mainly excepting the case where both of you make functional changes to the same line. It will ask you what to do there; if it guessed it might break stuff badly.)
Here, this is copy-pasted from that link I posted earlier:

[spoiler]

Have you ever:

Made a change to code, realised it was a mistake and wanted to go back?
Lost code or had a backup that was too old?
Had to maintain multiple versions of a product?
Wanted to see the difference between two (or more) versions of your code?
Wanted to prove that a particular change broke or fixed some piece of code?
Wanted to submit a change (patch) to someone else's code?
Wanted to see how much work is being done (where/when/who)?
Wanted to experiment with a new feature without interfering with working code?

In all these cases a version control systems should make your life easier.


and

Even if you work alone you can benefit from source control. Among others, for these reasons:
You don't lose anything. I never again commented out code. I simply delete it. It doesn't clutter my screen, and it isn't lost. I can recover it by checking out an old commit.

You can experiment at will. If it doesn't solve the problem, revert it.

You can look at previous versions of the code to find out when and where bugs were introduced. git bisect is great in that regard.

More "advanced" features like branching and merging let you have multiple parallel lines of development. You can work in two simultaneous features without interference and switch back and forth without much hassle.

You can see "what changed". This may sound basic, but that's something I find myself checking a lot. I very often begin my one-man workflow with: what did I do yesterday?

Just go ahead and try it. Start slowly with basic features and learn others as you go. You will soon find that you won’t ever want to go back to “the dark ages” of no VCS.


[/spoiler]

Can you give me some example of how is formatting preventing you to do anything? How does it matter, exactly?

Okay, I don’t really have time to type up a lecture on coding with a team; as you can probably guess I don’t get to the forums enough as is. But let’s go over a couple basic things.

Reformatting doesn’t matter to the compiler, but human beings are not compilers, they deal with source code as text so VC systems do too. In addition, version control covers things like comments, changelogs, documentation, all things in the text that the compiler ignores, but are vitally important to the people doing the coding.
The basic unit of all this is the patch (called a commit once you enter it in git) which looks like this. The patch is basically a listing of the changes that have been made to a text file, usually source code. Here’s an old patch I hacked up way back in the Whales days.

*** mapgen.cpp~ 2011-01-05 21:11:01.000000000 -0800
— mapgen.cpp 2011-01-07 15:25:32.000000000 -0800


*** 3024,3030 ****
ter(i, j) = t_rock_floor;
}
}
! switch (rng(1, 3)) { // TODO: More types!
case 1: // Weapons cache
for (int i = 2; i < SEEX * 2 - 2; i++) {
ter(i, 1) = t_rack;
— 3024,3030 ----
ter(i, j) = t_rock_floor;
}
}
! switch (rng(1, 4)) { // TODO: More types!
case 1: // Weapons cache
for (int i = 2; i < SEEX * 2 - 2; i++) {
ter(i, 1) = t_rack;


*** 3067,3072 ****
— 3067,3085 ----
ter(SEEX - 1, SEEY * 2 - 2) = t_stairs_up;
ter(SEEX , SEEY * 2 - 2) = t_stairs_up;
break;

  • case 4: // Handyman’s workshop
  • for (int i = 1; i < SEEY + 4; i++) {
  • ter(1           , i) = t_counter;
    
  • ter(SEEX * 2 - 2, i) = t_counter;
    
  • }
  • place_items(mi_hardware, 90, 1, 1, 1, SEEY + 3, false, 0);
  • if (one_in(3))
  • place_items(mi_mischw,	90, SEEX*2-2, 1, SEEX*2-2, SEEY + 3, false, 0);
    
  • else
  • place_items(mi_tools,	90, SEEX*2-2, 1, SEEX*2-2, SEEY + 3, false, 0);
    
  • ter(SEEX - 1, SEEY * 2 - 2) = t_stairs_up;
  • ter(SEEX , SEEY * 2 - 2) = t_stairs_up;
  • break;
    }
    break;

You can see it contains a bit of context above and below the changes, and lists lines altered with an !, added with a +, and subtracted with a -. A patch like this makes it trivial to read and see just what code is altered in a given change. This makes reviewing code very simple.
Now, if I run it through a reformatter, too, here’s what happens to the patch:

*** mapgen.cpp~ 2013-04-11 14:45:03.000000000 -0700
— mapgen.cpp 2013-04-11 14:47:49.000000000 -0700


*** 11,38 ****
#endif

ter_id grass_or_dirt()
! {
! if (one_in(4))
! return t_grass;
! return t_dirt;
! }
!
! enum room_type {
! room_null,
! room_closet,
! room_lobby,
! room_chemistry,
! room_teleport,
! room_goo,
! room_cloning,
! room_vivisect,
! room_dorm,
! room_living,
! room_bathroom,
! room_kitchen,
! room_bedroom,
! room_split
! };

bool connects_to(oter_id there, int dir_from_here);
void house_room(map *m, room_type type, int x1, int y1, int x2, int y2);
— 11,39 ----
#endif

ter_id grass_or_dirt()
! {
! if (one_in(4))
! return t_grass;
! return t_dirt;
! }
!
! enum room_type
! {
! room_null,
! room_closet,
! room_lobby,
! room_chemistry,
! room_teleport,
! room_goo,
! room_cloning,
! room_vivisect,
! room_dorm,
! room_living,
! room_bathroom,
! room_kitchen,
! room_bedroom,
! room_split
! };

bool connects_to(oter_id there, int dir_from_here);
void house_room(map *m, room_type type, int x1, int y1, int x2, int y2);


*** 45,147 ****
void square(map *m, ter_id type, int x1, int y1, int x2, int y2);

void map::generate(game *g, overmap *om, int x, int y, int turn)
! {
! oter_id terrain_type, t_north, t_east, t_south, t_west, t_above;
! int overx = x / 2;
! int overy = y / 2;
! if (x >= OMAPX * 2 || x < 0 || y >= OMAPY * 2 || y < 0) {
// This happens when we’re at the very edge of the overmap, and are generating
// terrain for the adjacent overmap.
! int sx = 0, sy = 0;
! overx = (x % (OMAPX * 2)) / 2;
! if (x >= OMAPX * 2)
! sx = 1;
! if (x < 0) {
! sx = -1;
! overx = (OMAPX * 2 + x) / 2;
! }
! overy = (y % (OMAPY * 2)) / 2;
! if (y >= OMAPY * 2)
! sy = 1;
! if (y < 0) {
! overy = (OMAPY * 2 + y) / 2;
! sy = -1;
! }
! overmap tmp(g, om->posx + sx, om->posy + sy, om->posz);
! terrain_type = tmp.ter(overx, overy);
! if (om->posz < 0 || om->posz == 9) { // 9 is for tutorial overmap
! overmap tmp2 = overmap(g, om->posx, om->posy, om->posz + 1);
! t_above = tmp2.ter(overx, overy);
! } else

Cut off because it’s freakin’ huge.Virtually every line is changed, now. This is ugly and unreadable, and my small change is lost in the huge mass of reformatting changes. For this reason, etiquette usually says you should keep your code in the style of the main project, even if you don’t like it. The main branch’s style is awful, and there are plans to reformat it to 1tbs style IIRC, but it’s to be done in a piece-by-piece fashion to prevent that kind of big ugly commit from going in all at once.

Actually, I did work for you, and if I had access I would have merge it for you as well. But you want of me to maintain my own git, for some strange reason, when you already have one and can upload it yourself in a matter of seconds.

You still don’t understand what git does for you. You’re making more work for yourself, and more work for others by not learning it. “Maintaining your own git” is actually easy as pie, it just requires a half an hour or so’s time to learn the basics of the tools. I hope for your sake, and the project’s, that you’ll learn how to handle this stuff one of these days.

I already have my changes merged, why are you saying all that to me? I’m not preventing anyone from using whatever software and tools they want.

Now, if I run it through a reformatter, too, here's what happens to the patch:

Virtually every line is changed, now. This is ugly and unreadable, and my small change is lost in the huge mass of reformatting changes.

Shouldn’t your git software have some option to ignore white spaces and line break differences?

You still don't understand what git does for you. You're making [i]more work for yourself, and more work for others[/i] by not learning it. "Maintaining your own git" is actually easy as pie, it just requires a half an hour or so's time to learn the basics of the tools. I hope for your sake, and the project's, that you'll learn how to handle this stuff one of these days.

My work is done. It’s only a question of them merging it with the main branch or not, it has nothing more to do with me. If they want it in a git they can upload it there in seconds. So what’s the problem, how am I making more work for others? I did not make work for others, I did the work for them. If it’s easier they can always do it from scratch, at least they know now what parts of the code needs to be modified. And again, most important changes ARE ALREADY in a git:

Is that what you wanted? There it is, what more?

Can you merge it now? Show us how easy it is.

His work is excellent LazyCat, thank you very much, I’m playing with the latest version released on April 12, the differences in performance, bugs and performance are huge comparing with the “official”.
This has not been incorporated in the main game??? When the user Tase up the package to GitHub, nobody bothered to take a look???
Please continue with their work, many of us like what he does with the game, I now understand why Toady develops DF alone and not published as Open Source …

Excuse my english, is my third language

waitso, has this been merged with main DDA minus the metal gear solid theme?

+1 for in favor of merging this awesome stuff…

NO… and it seems that nobody is going to incorporate …

Here is a quick update to test above ground z-levels and new JUMP action.

DOWNLOAD (19. April): MGSmod rev.23b

I posted about it here already:
http://www.cataclysmdda.com/smf/index.php?topic=716.msg9776#msg9776

Some other things in this build:

  • NPC commands: “wait here” and “follow me”
  • zombies in labs and silo launch room
  • glass walls and more excitement in labs
  • sound/noise when shooting stuff
  • firearms are more effective
  • proper monsters reaction to noise
  • fixed missile silo crash bug
  • remove missile and open hatch after launch
  • missile launch gas and fire animations
  • missile launch sound effects and messages
  • pavement ring around missile hatch
  • only one missile in a nuclear silo
  • spawn items if missile disarmed
  • underground/overground level indicator

[quote=“LazyCat, post:38, topic:528”]Here is a quick update to test above ground z-levels and new JUMP action.

DOWNLOAD (19. April): MGSmod rev.23b

I posted about it here already:
http://www.cataclysmdda.com/smf/index.php?topic=716.msg9776#msg9776

Some other things in this build:

  • NPC commands: “wait here” and “follow me”
  • zombies in labs and silo launch room
  • glass walls and more excitement in labs
  • sound/noise when shooting stuff
  • firearms are more effective
  • proper monsters reaction to noise
  • fixed missile silo crash bug
  • remove missile and open hatch after launch
  • missile launch gas and fire animations
  • missile launch sound effects and messages
  • pavement ring around missile hatch
  • only one missile in a nuclear silo
  • spawn items if missile disarmed
  • underground/overground level indicator[/quote]

There is some wicked cool stuff in here, thanks for updating 8)

Cooool!
Here’s hoping the more vanilla oriented stuff finds a home in a future DDA release.