IVANOV.

Dec 15, 2008, 8:09 pm
#1
Joined: Dec 15, 2008
Occupation: Making IVANOV.
Location: Behind your back everytime.
Interests: Shit nobody cares about
Posts: 100
Hi, everyone.

As I'm newly subscribed to this forum, let me introduce myself.

I'm already a diehard IVAN fan, since I've been playing it for a few years now, and I keep wondering why I waited so long to subscribe here.
But since this year, I really started getting into programming and stuff like that, and now, finally, I have begun an ambitious project which has already been on my mind for a looooooooooong time.

That project is called... IVANOV. (Short for IVAN: Overkill )

In short, the first thing it's going to be is a complete remake of IVAN using Java, since that's the programming language I can handle the best.
The main purpose, but it's still just an idea, is making IVAN multiplayer.

Most of you now will probably go wtf, omg, multiplayer, how the hell is that ever going to work... As I said, it's still just an idea, but I've already started to think a lot of things through, and I think, with a lot of effort, it should be possible (I don't know of anyone who came up with the idea before, if someone has, tell me).

Since I'm remaking IVAN from scratch, I think I'll be coming here often to ask about the existing IVAN code, since my knowledge of C++ is nowhere near what it should be...

Now, for the problem I'm currently having. I'm currently working on a level generator. I always thought for IVAN, there were a bunch of premade levels, which were loaded at random each time you play. But apparently, the game uses a completely random level generator.

My problem is, how are the tunnels generated? I can't really think of some effective algorithm myself, to generate some decent tunnels between all of the random rooms.

Thanks for the help. :wink:
Dec 16, 2008, 1:44 am
#2
Unknown_Entity's avatar
Petty Tyrant


Joined: Dec 9, 2007
Posts: 325
Well, good luck to you sir. If you can find a way to make multiplayer work [something we here have discussed many a time], I will certainly be in awe.

Welcome to the forums. Hit up IRC sometime.
Dec 16, 2008, 2:08 am
#3
capristo's avatar
The Imperialist


Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,148
Yes welcome aboard. I'm of the strong opinion that it would be best to keep it in C++. Much less work, C++ is a much more flexible language in my opinion, and definitely much faster than Java.

But multiplayer would definitely be great. As for the levels I couldn't tell you how they are generated, but they are not entirely random.
Dec 16, 2008, 5:14 am
#4
Joined: Dec 3, 2007
Occupation: Chaos Weaver
Location: Standing between all life and death
Posts: 2,826
It's too bad you didn't come around earlier. Ighalli and Planplan coulda helped ya lots. Z's your only hope now

Welcome to the forums, and don't pester Z too much!
Dec 16, 2008, 5:36 am
#5
capristo's avatar
The Imperialist


Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,148
did ighalli and planplan leave or something?
Dec 16, 2008, 8:21 am
#6
Joined: Dec 3, 2007
Occupation: Chaos Weaver
Location: Standing between all life and death
Posts: 2,826
They haven't been around, that's for sure.

Ighalli knew the god system best, and it'll have to be modified for multiplayer.

Planplan once worked on a mod with Blob, and he made something to help with level making, so he coulda been of great help too.

Z appears to know all (no, not like god, in programming) and he's still around, and the rest of us don't really know much (with the possible exception of Atomic). So Serefan will probably be relying on Z a lot.
Dec 16, 2008, 8:25 am
#7
Joined: Dec 15, 2008
Occupation: Making IVANOV.
Location: Behind your back everytime.
Interests: Shit nobody cares about
Posts: 100
So it HAS been discussed. Does anyone have the links to the threads or something? It would help me out what others said about it.

My first idea was something like an MMO. But, since the game is completely turn based, there would be a LOT of issues on how to get this to work.

As for the C++, I don't get any decent C++ lessons until next year, and I'm progressing quite well with my project in Java, so I'll just continue this and see how far I get, I'll just pray to the altar of Z and hope he doesn't change me into a mushroom.
Dec 16, 2008, 9:34 am
#8
capristo's avatar
The Imperialist


Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,148
I still think it's a bad idea. Why would you import the entire source code to another language? It would take a lot of your time up and the end result would not be the same. IVAN gameplay is very precariously balanced and even the smallest change would upset that balance. I'm also pretty sure the way they handle graphics in IVAN would be impossible to replicate in Java.

It would be much easier just to learn the basics of C++. C++ is an extremely easy language to learn. Much easier than Java. The only thing you need to learn pretty much is networking, which is fairly simple... Trust me, keep it in C++. This is a great idea but trying to import it to Java would just kill the project
Dec 16, 2008, 10:11 am
#9
Joined: Dec 4, 2007
Occupation: Perfect Soldier
Location: Astragius Galaxy
Interests: Fiana, Peace, Melons
Posts: 1,054
I don't recall multiplayer IVAN being discussed a whole lot, but I really have to say that I fucking HATE Java.

Good luck, though.
Dec 16, 2008, 10:27 am
#10
Ernomouse's avatar
Master mine stomper


Joined: Dec 16, 2007
Occupation: Pouring molten bronze in sand
Location: In the cold end
Posts: 2,047
Hell, someone makes an opening to actually do something to IVAN but scripting and you guys engourage him like this? James, get me to the forum controls! >=(

Sounds great to me, Serefan, and welcome to the Cathedral! Even if you don't succeed with Java, I bet after you've worked a while with the source you'll be one of the few who actually know a jack about the source code.
Dec 16, 2008, 4:16 pm
#11
capristo's avatar
The Imperialist


Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,148
Well Erno, have you programmed in C++ and Java? If you have you would know why we are opposed to it. Like I said I support the idea but we're only trying to help him. If he tries to port it to Java he will just drive himself crazy and the project will never get even halfway completed
Dec 16, 2008, 5:13 pm
#12
Joined: Dec 15, 2008
Occupation: Making IVANOV.
Location: Behind your back everytime.
Interests: Shit nobody cares about
Posts: 100
People, people, please.

First of all.

capristo wrote
If he tries to port it to Java he will just drive himself crazy and the project will never get even halfway completed

I know. I know. Would it change your mind if I said I'm already making quite some progress? This is just a challenge for me, I love programming, and it's an automatic training for my exams this year too.

Also, I'm not porting it entirely instantly. I'm building up the game, starting with the basics. (i.e. being able to make spiders run around your ass, being able to attack with 1 type of weapon) And later on, I'll diversify... And when we are able to come up with something, maybe we'll even change the background story a bit, make other levels, side quests.

It's gonna take quite some time. But I myself do the vital programming of the project, and I have friends coding repetitive stuff.

Hell, I may even abandon the project once. But now, I really would like to do this, and all I'm asking is some support.

Somagu wrote
I really have to say that I fucking HATE Java.

That's an opinion. That's not a reason why I wouldn't do this. I just want to say don't try to talk me out of it, I'll do it anyway. :wink:
Dec 16, 2008, 5:20 pm
#13
Joined: Dec 2, 2007
Occupation: archmage
Location: Attnam
Interests: roguelikes
Posts: 375
Both languages have their good things and bad things. I prefer C++ myself for some reasons, but Java is not that bad (yes, it is slower, but it's only like 2 times slower, that's not that bad, most algorithms in IVAN work instantly anyway; and I don't suppose it is harder to learn than C++).

But I agree it's best to keep it in C++, for some reasons:

- If you write a remake, each change somebody makes to IVANOV or IVAN won't be compatible with another, unless somebody is willing to translate.

- you will have to understand IVAN very well anyway if you want your remake to be faithful. You can create your own random level generator, but it will be different than IVAN's. And so on.

- it is a lot of work to translate such a big program as IVAN to another language. If you had no C++ lessons yet, it will be less work to learn C++ yourself than to translate IVAN to Java.

- as capristo says, there is a chance that you will lose your interest in the project. If you lose it halfway while you are remaking IVAN in Java, your work will be kind of lost (unless somebody else comes who wants to continue porting IVAN to Java). If you add features, they will stay.

I was thinking about multi-player IVAN... I think IVAN is written in a way that allows relatively easy upgrade to multi-player, since (AFAIK) both player characters and NPCs are "characters" and the only thing which changes is that players are controlled by UI and NPCs by AI. It shouldn't be that hard to allow more than one player character. Some things are designed for one player only (I suppose the gods only have relation to 1 PC), but these should be easy to change. (You can even clone yourself in IVAN, or resurrect your old self from a ghost level! These are controlled by AI, but it's a good thing anyway.) (In some games player character seems to be a completely different object for the game than NPCs. I think games like these would be much harder to make multiplayer.)

The simplest version of multi-player is ... well, to have shared ghost levels and hi-score files. But I think it's not what we are after. My plan to make IVAN multiplayer (which I currently don't intend to actually perform, but I think it is an interesting project) is to introduce a special mode in IVAN, where you can import your character from your single player game, and fight against guys controlled by other players playing on the same server. You could do it like chess (i.e. turn based). I think this could be a interesting thing for our forum (play multiplayer IVAN instead of random multiplayer games). We could do something like a battle of two teams of 8 guys each. But I don't know if we would play it that much.

Changing IVAN into a MMO would be more work. You need to do lots of design for that (are strong players able to fight weak players? if somebody slays Attnam and New Attnam, does it mean that they won't be available to the new players? how to find good stuff when all the dungeons have already been cleared by players before you? in IVAN there is a limited supply of items and this fact limits your power, if there would be an infinite supply of dungeons, how to make sure that it is also so in multiplayer IVAN? and so on) You can keep the mechanics, gods, and materials, but I think you will need to redesign all the world for MMO. Well, not all of the mechanics, because turn based play will probably no longer be a reasonable option.

I have not looked at it, but there is a roguelike turned multiplayer called MAngband (Multiplayer Angband). Maybe you could look there for some solutions to your problems.
Dec 16, 2008, 5:47 pm
#14
Joined: Dec 15, 2008
Occupation: Making IVANOV.
Location: Behind your back everytime.
Interests: Shit nobody cares about
Posts: 100
Yeah, well, I dropped the MMO idea.

My multiplayer idea is something like this (note they're all still rough ideas):

Someone creates a server ('a new world'), and other players can join at the start of the game.

Game can be free for all, teams, locked teams, co-op, and so on.

Free for all means everybody starts in his/her own hometown, makes his way to attnam, and from gloomy cave on, everybody shares the same dungeon levels.

Teams, is the same, just with some people starting at the same spot.

Locked teams is the same, only team killing is not allowed.

Co-op is everybody at same spot.

Etc.

Of course, difficulty, item number, and level size would vary depending on the number of players.

Now for the issues. :wink:

Z wrote
- If you write a remake, each change somebody makes to IVANOV or IVAN won't be compatible with another, unless somebody is willing to translate.

Is this really a problem? Not everything has to be compatible with everything. If we can really pull this off, I'd have no problem implementing suggestions myself and crediting for it.

Z wrote
- you will have to understand IVAN very well anyway if you want your remake to be faithful. You can create your own random level generator, but it will be different than IVAN's. And so on.

That's not really my plan either. The basics will be the same, but it doesn't have to be an exact copy.
There already are some... extra's. :wink:

For the level generator, I just wanted to know how he did it himself, because think about it, randomly generating tunnels is not something you come up with in a few secs.

Z wrote
- it is a lot of work to translate such a big program as IVAN to another language. If you had no C++ lessons yet, it will be less work to learn C++ yourself than to translate IVAN to Java.

- as capristo says, there is a chance that you will lose your interest in the project. If you lose it halfway while you are remaking IVAN in Java, your work will be kind of lost (unless somebody else comes who wants to continue porting IVAN to Java). If you add features, they will stay.

I'm willing to take that risk. It won't be ready in the next few days, but what is.
Dec 16, 2008, 5:49 pm
#15
Joined: Nov 22, 2008
Interests: IVAN
Posts: 1,163
Well, i might get half of this forum angry, but i think IVANOV in Java might work, for a simple reason: there are way more people that are actually good at Java than C++, and thus can make decent add-ons, changes, etc... for IVANOV.

Not that C++ is that hard, but it's easier, quicker and more comfortable to make changes to a language like Java when you know it well enough.

If you lost interest in the project halfway, you get at least the experience, which will certainly help in getting trough your exams

About the fact that, for instance, another level generator, should be 'unfaithful' to IVAN: is there ANY mod that IS faithful to the original game? Every mod has is good and bad points, and no mod will ever exactly look like the original, since in that case it would BE the original. the purpose of modding and reprogramming is to be unfaithfull.

Again, i appreciate the fact that C++ might be better than Java in many aspects, but that doesn't mean programming IVAN in Java has no advantages at all. I think the advantages more than make up for the "slower", "harder" and "more flexible" way of programming...
Dec 16, 2008, 6:20 pm
#16
Joined: Dec 4, 2007
Occupation: Perfect Soldier
Location: Astragius Galaxy
Interests: Fiana, Peace, Melons
Posts: 1,054
Oh, I'm aware it's an opinion, that's why I wished you luck, regardless. Don't get me wrong, I'd like to see this work either way, I just don't like Java too much.
Dec 19, 2008, 6:20 pm
#17
Fluffy_Bot's avatar
Master of the profane arts of linguistic combat


Joined: Jan 27, 2008
Occupation: Boxing Champion
Location: Kamogawa Gym
Interests: Boxing, Pornography
Posts: 328
BAHAHAHAHAHAHAHAHAHAHAHAHA
AHAHAHAHAHAHAHAHA
AH HA HA HA
Oh wow. What the fuck was wrong with SP IVAN anyways? I figured some of the magic came from the fact that you were all alone and there were tons of nasty critters around to shove a chainsaw or two worth of pain up your ass and that you didn't have a particularly bright fellow around to pull the damn things out before they managed to carve their way up to your lungs. I mean, I can understand the trends towards social gaming these days but a mutliplayer roguelike is basically like hotseat solitaire - it doesn't fucking work very well. The way time is handled in IVAN really fucks over MP gaming unless you've got a lot of haste wands and identical stats. The whole appeal of multiplayer gaming comes from everyone interacting at the same time, either to help each other out or to attach some brains to walls, and this appeal becomes greatly skewed when Johnny Fuckbee gets 5 turns and his pal Edward Dumbcunt gets 1 because Edward is carrying all of Johnny's shit for him.

Yeah, welcome to frustrationland every time Johnny gets an idea. Also, the second one of the players gets knocked unconscious or falls asleep, the entire game becomes an exercise in patience. Accidentally got stabbed by a spear with some kobold blood on it? Time to go watch a movie. Hopefully your friends have your phone number to let you know when it's your turn.

PS: Fuck Java.
Dec 19, 2008, 6:37 pm
#18
Joined: Dec 11, 2008
Posts: 1,770
Maybe you could make it so there are certain parts of the IVAN world where you can do multiplayer? Like an arena and some dungeons? The first person enters and is asked to host or join. He hosts the game and others join. Like a LAN game but over the internet. Good luck trying to program that though. Oh and it would have to be turn based to be faithful to the original IVAN.
Also, wouldn't you need a server for online IVAN?
And no I don't know shit about programming. All I can do is edit IVAN's script files.
Dec 19, 2008, 7:41 pm
#19
Norn's avatar
Master of traversing post-apocalyptic terrain


Joined: Feb 1, 2008
Occupation: Student
Location: Sweden
Posts: 39
Fluffy, sometimes you suck..
There are more than one way to make IVAN multiplayer, he just needs to find a way that works well enough. And if Serefan loves programming so much that he's willing to port IVAN to Java(madness!) then he's probably got enough willpower to try a few different solutions.

But I see where you're coming from, fans of games tend to have utterly game warping ideas like this all the time(multiplayer oblivion, counterstrike in UT, mana/magic system in IVAN). And obviously it's a bad idea most of the time and they wont actually have the skills or energy needed to go through with it properly.

No reason to mock them like you do.

All the power to you Serefan, Java is my prefered language too btw

As for tunnel generation, I suggest you search the web for maze generation algorithms, the technique should be the same. And do look at the source code for IVAN. Java and c++ isnt that far apart.
Dec 20, 2008, 9:20 pm
#20
Unknown_Entity's avatar
Petty Tyrant


Joined: Dec 9, 2007
Posts: 325
Quote
Fluffy, sometimes you suck..
There are more than one way to make IVAN multiplayer, he just needs to find a way that works well enough. And if Serefan loves programming so much that he's willing to port IVAN to Java(madness!) then he's probably got enough willpower to try a few different solutions.

By all means, suggest another way for it to work. We have discussed this a few different times throughout IVAN's history, and nobody ever comes up with a decent idea. While I agree that Fluffy is being a little demeaning (like that's out of the ordinary ), he is also right. The only way IVAN will be both multiplayer and fun is for it to no longer be IVAN.
Dec 20, 2008, 10:31 pm
#21
Fluffy_Bot's avatar
Master of the profane arts of linguistic combat


Joined: Jan 27, 2008
Occupation: Boxing Champion
Location: Kamogawa Gym
Interests: Boxing, Pornography
Posts: 328
Serefan wrote
In short, the first thing it's going to be is a complete remake of IVAN using Java, since that's the programming language I can handle the best.
The main purpose, but it's still just an idea, is making IVAN multiplayer.

That's what I was going off of. Not "a multiplayer game based on the IVAN universe" or "a multiplayer game inspired by IVAN" but instead "multiplayer IVAN." That implies that the mechanics are going to remain largely intact to give us the IVAN experience we all know and love/hate (in a very bipolar sense for some) except with our buddy getting gang-raped alongside us. Now if time and difficulty scaling were not factors, I think that a multiplayer roguehack-a-like would have a damn fine chance, but these two aspects are core concepts to the IVAN experience and how the game plays. Thus, in the purest sense, "IVAN multiplayer" would be an extremely frustrating experience.

Now if the idea here was to make a "fan" game based around IVAN but with different principles and such, that's just fine and I wish Serefan the best in his struggles. There are plenty of ways to approach it that could yield some fun results, but none of them would really capture the IVAN experience. Still, fun is fun and if you manage to make a fun game then more power to you! I'd personally like to see an IVAN 2D fighting game with all of the characters we know and love, each with crazy-stupid combos and one very special fighter called "The Player" who is ridiculously weak but has a dog to help him. I also think the idea of an MMO interpretation of IVAN could yield fantastic results once you get past the initial leap to a real-time engine. Levels that don't currently have players on them would be randomly re-generated and the equipment/monsters would be spawned in as soon as someone joined, then beefed up for more players or toned down for less. I'd also like to see this idea evolve with benefits for helping each other out, such as flanking ability and combat boosts when you've got other players around you to encourage folks to stick together.

In conclusion, multiplayer IVAN doesn't really have a chance in hell unless you gut it of all the aspects that give it a unique feel and replace them with a more basic and simplified structure that lends itself well to multiplayer. It may sound like a good idea at first, but looking into the matter with any amount of scrutiny reveals the flaws behind it. I don't even want to go into drinking from fountains, how cheap deaths of one player will ruin the multiplayer experience for the other, or how the scaling could be horribly abused in the same sense of Double Dragon II (the engine spawns more items and brings the difficulty up to accommodate more players and one of them just snatches up all the gear and kills the other one for a "better start").
Dec 21, 2008, 10:33 am
#22
Joined: Dec 15, 2008
Occupation: Making IVANOV.
Location: Behind your back everytime.
Interests: Shit nobody cares about
Posts: 100
Fluffy_Bot wrote
The whole appeal of multiplayer gaming comes from everyone interacting at the same time, either to help each other out or to attach some brains to walls, and this appeal becomes greatly skewed when Johnny Fuckbee gets 5 turns and his pal Edward Dumbcunt gets 1 because Edward is carrying all of Johnny's shit for him.

Yeah well, that was, ofcourse, one of the first things that came to my mind. Don't think I just went to bed one night thinking like a madman: Hey! IVAN! Hey! Multiplayer! Hey! IVAN Multiplayer!

No. I thought of it for a loooong time.

First off, yes, I WOULD make it so everybody has to make his move. That's also the reason I abandoned the MMO idea. When playing with 3 or even 4, turn-based should be possible, I think.

Second, when someone needs to go, and can't play any longer, he's able to commit suicide. Simple as that.
When someone's being a jackass, or doesn't play at a decent tempo, other players should be able to vote him out of the game, again, killing him. I haven't figured out yet, how to filter out unfair votes (i.e. Voting someone out when there are 2 left, just to win the game).

Norn wrote
As for tunnel generation, I suggest you search the web for maze generation algorithms, the technique should be the same. And do look at the source code for IVAN. Java and c++ isnt that far apart.

Thanks, finally some help to my real question. I'll see what I can find. And I already have some friends plowing through the IVAN code, I'm not alone in this project.
Apr 6, 2009, 3:38 pm
#23
Comrade's avatar
skeleton warrior


Joined: Apr 7, 2008
Location: USSR
Posts: 258
Wouldn't it be easier to make a level creater/generator using java or c++?
Apr 7, 2009, 6:16 am
#24
Joined: Dec 15, 2008
Occupation: Making IVANOV.
Location: Behind your back everytime.
Interests: Shit nobody cares about
Posts: 100
Comrade wrote
Wouldn't it be easier to make a level creater/generator using java or c++?

That's the whole plan... It's the algorithm needed that posed a problem.
Apr 18, 2009, 9:18 am
#25
Joined: Dec 15, 2008
Occupation: Making IVANOV.
Location: Behind your back everytime.
Interests: Shit nobody cares about
Posts: 100
Since I'm currently actively working on this project again, and the programming is coming along even more smoothly than I could imagine, I was wondering if you guys want me to update my progress once in a while. It depends on wether you're interested in the progress I'm making, and the stuff I learn about the IVAN mechanics along the way.

Anyways, just so you know, this is what I have so far:

- When starting the game, my randomlevelgenerator generates a level, currently this is always the same level: a giant square room for testing and debugging.

- The game screen itself shows the entire level, made up of the same floor and wall tile all over. Materials are not being used as of yet. The player character is visible, always in the middle of the screen, with the map 'moving beneath his feet', personally I like this more (and it's easier to program ). The character is always the same picture, so I'm not using a combination of different bodyparts with the right colors and stuff as of yet.

- Possible actions are walking around with the arrow keys, the walls blocking your progress. Engraving squares on the level. Picking up items.

- As picking up items is a possible action, naturally items are available, and can be placed randomly on the level. For testing, only one item is used at the moment, with the only variable being that the item is of a certain type (i.e. a helmet).

- The bar showing the name of the player is fully functional.

- The message panel is fully functional too: basically, at the moment it shows a message when walking over an item, or an engraving.

- The ragdoll is visible, currently directly connected to the Endurance stat, because I don't have the right calculations for HP yet. Changing endurance changes the ragdoll.

- The basic stats are also visible (i.e. AStr, LStr, Dex, Agi, End, Per, Int, Wis, Cha, Siz).

I don't know if you guys know a lot about programming, but I can tell you this has already been a fair deal of work, and I'm quite happy with the results. At the moment, I'm thinking about what to add next.
Jump to