another one IVAN fork

Nov 2, 2017, 6:20 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
added windoze build for those who want to try it out. it at leasts starts with wine, but i don't know if it really works.


p.s.: slightly updated.
Nov 2, 2017, 12:42 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
and another bugfix. new post, 'cause somebody may already downloaded old buggy version.
Nov 4, 2017, 2:18 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
small update:
• fixed crash with ctrl+arrows in wilderness (in dungeon, ctrl+arrow will invoke 'g'o command).
• OpenGL renderer is mandatory now; also, use power-of-two texture, so older intel videocard emulators will work too.
Nov 4, 2017, 5:28 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
fixed siren AI bug: siren never notices that her song was unsuccessfull, so she never proceed to humanoid AI. basically, siren will stand still if there is any character in adjacent square. the bug is present in comm. fork too. this not only blocks spawned sirens movement, but will cause elven ambassador to block Attnam's temple entry forever, if she'll manage to get into it.
Nov 5, 2017, 4:07 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
refactored earthquake code into reusable method. falling bricks will kill immobile creatures now, regardless of their HP (so earthquake will kill Jenny, for example, 'cause she has no room to escape falling bricks).
Nov 5, 2017, 12:34 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
slowly rewriting save/load code. the game will use textual entity names, and textual config names, so it will be possible to change scripts without invalidating saves. in the faaaaar future i may switch to human-readable textual saves (if everything will work as expected).
Nov 5, 2017, 11:18 pm
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,217
That will actually be really useful, incrementing the save file number is really clunky.
Any idea if you can get rid of the bonefile number?
Batman? wrote
its been so long since i had gotten that far i didnt think it through. arrrr!!!!!!
Nov 5, 2017, 11:27 pm
Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,311
Wouldn't human readable saves also be human writeable, aka easy to manipulate and cheat?
Nov 6, 2017, 3:51 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
2fejoa: as bones basically just level saves, they should benefit too. tbh, i mostly thought about bones when i started working on this: it is too painful to loose 'em all each time i bumping version number (and it happens quite often in k8ivan). and yes, i can get rid of level ids encoded in bone file name too: it's not hard to scan bone headers and extract all the info game need.

2capristo: ah, it is already possible to cheat with programs like CheatEngine, and even easier: by just changing values in script/ (see ut script in k8ivan: it spawns alot of impossible shit near the entrance if player name is '_k8_'). security by obscurity never really worked. and, tbh, i see no reason to stop cheaters: if people want to ruin their pleasure, why should we stop 'em? it is their decision, after all.

on the other side, textual saves will allow not only cheating, but human inspecting of a save in the case of some problems. analyzing save files is almost impossible now (due to how saves are implemented). as a developer, i must confess that i never even thought about writing "save file analysis tool" due to it's complexity. textual saves rox for devs.

and, btw, we can just encrypt saves with some simple algo, so lazy people won't just edit 'em with their text editor. or write something like a checksum (as for highscores), so modified saves will be rejected.

anyway, text saves won't come in a day or two (even my developement speed is not that high %-). first i have to add names for all saved values, and sections for objects. which require wrapping all binary i/o in ugly macros (sigh) and lambdas.

as for now, i catched one bug with wrong type i/o, harmless for x86, but disasterous (i think) for x86_64. not that k8ivan works for x86_64 at all, tho: i don't have x86_64 system to test it on, so i simply disabled 64-bit builds with `static_assert()`. %-)
Nov 7, 2017, 8:22 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
small update: fixed bug in 'g'o (it should not skip items in corners anymore); fixed ancient bug in object pool (the game should not crash due to "pool desync" if it detected broken save anymore); various small improvements.
Nov 15, 2017, 9:18 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
on hiatus again. irl funding problems, lol. prolly be back in next seven years.
Jan 13, 2018, 10:16 am
Joined: Jan 13, 2018
Occupation: Student
Location: Honduras
Interests: Bananas and videogames
Posts: 25
This looks fun, i will take a look.
i'm downloading this, i need it for my obscure games collection.
Jan 8, 12:41 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
so, i wrote my promise 7 years ago… it's time to stand by my words, i guess. it's great to see that the site is still alive, and that the game is still alive. i'm still playing I.V.A.N. from time to time, so i think i'll try to port most new comm. fork dungeons and quests. sorry, i still prefer my fork to comm, and it is easier for me to port TO k8ivan than to port FROM it.

the plan is to port all new items, monsters, dungeons and quests (with some fine-tuning to fit k8ivan), but not crafting, and prolly not new flame system. crafting is not on the table because i always find crafting in games boring (sorry, i don't mean that it is wrong or bad, just a personal preference), and flame system looks too big of a game changer for me. i'd like to have flammable things, but it's hard to rip it out of comm. fork properly, because two codebases are quite different now (and my resources are limited).

but hey, you did a great amount of work on comm. code and content! thank you all for keeping I.V.A.N. alive! (and for adding more things i can steal. sorry for the tone of my post, i really appreciate all your hard work. just thought that i should keep my writing style close to the original.
Jan 9, 3:13 am
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 807
Glad to see that your variant is still alive.
Jan 9, 5:03 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
thank you! it's not only alive, but i am experimenting with moving some c++ logic to simple scripts:
this is how Sumo stairs processed now:
  Config SUMO_ARENA_ENTRY;
  {
    PostFix = "downwards";
    BitmapPos = 0, 208;
    on on_enter {
      AddMessage "trying to enter sumo arena";
      SetOtherToSumo;
      if !@other_actor || !@other_enabled || @other_hostile || !@other_can_be_seen;
        Allow;
      endif
      if @tweraif_is_free;
        AddMessage "\"You started this stupid revolution, after which I've been constantly hungry. Get lost!\"";
        Disallow;
      endif
      if @player_sumo_champion;
        AddMessage "\"I don't really enjoy losing, especially many times to the same guy. Go away.\"";
        Disallow;
      endif
      if @player_polymorphed;
        AddMessage "\"Don't try to cheat. Come back when you're normal again.\"";
        Disallow;
      endif
      if @player_hunger_state < SATIATED;
        AddMessage "\"Your figure is too slender for this sport. Eat a lot more and come back.\"";
        Disallow;
      endif
      if @player_hunger_state < BLOATED;
        AddMessage "\"You're still somewhat too thin. Eat some more and we'll compete.\"";
        Disallow;
      endif
      AddMessage "\"So you want to compete? Okay, I'll explain the rules. First, I'll make a mirror image out of us both. We'll enter the arena and fight till one is knocked out. Use of any eq
      YesNoQuery "Do you want to challenge him? [y/N]";
      if @last_query_bool != "tan";
        Disallow;
      endif
      Allow;
    }
  }
for now it is quite stupid, interprets the whole thing each time (i.e. reparses it), and missing a lot of APIs. i.e. it is little more than a PoC. but hey, i have to start somewhere!

i believe that with richer API (it's not hard to do, just boring it would be possible to write new quests almost entirely in .dat files. althrough new items (not configs) stll need C++ objects declared. but maybe i'll be able to create "scripteditem" and hack the database to use/extend it. this way people won't need to touch C++ anymore (at least not as often).


by the way, some stats: the game has about 350 item and material classes. not configs, just classes. it's a lot! with configs, this is about 800-1000 items, i believe. and with different materials it is MUCH more. i always knew that I.V.A.N. is rich in contents, but never really knew HOW rich it is!
Jan 9, 7:10 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
also, i bumped game screen size (not window!) by ~120 pixels, so i can see more map. and implemented "paper doll on the left" option. it required much less changes than i expected: most game code either asks for the screen size, or uses map size in tiles as a measurement.

stats rendering is mostly done by using position variables too, they simply inited to hardcoded values. i want to have it on the left, so…

i also took item descriptions from the community fork, and draw them under the list. because why not?
Jan 9, 10:55 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
also, implemented "can meat" command. cans can be filled with meat from lumps of flesh (or lumps of banana). also, the same could be done with normal bananas. the idea is that it is easy to put "banana flesh" into the can, and lumps of flesh can be packed too. but dead bodies cannot, they should first be cut to pieces. i didn't implemented cutting mechanics yet (and i'm not sure if i will, i have to think about it). for now you can explode someone to lumps of flesh, which is unconventional, but perfectly working way to skin a carcass.

and no, you cannot do this with cat flesh. because i love cats, cats should not be used this way!

also, don't forget that you can "dUmp" cans (and bottles) in k8ivan! so that can of stupid school food can be reused for something more valuable.

sorry for the message spam, i just thought that people might be interested in some of my ideas. it should be relatively easy to port at least some of them to community fork.
Jan 10, 12:21 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
and hey… why not? it is possible to configure screen resolution now. the game is *almost* working in 640x480, and resolutions higher than 800x600 seems to work as expected. as k8ivan has non-integral scaling too, the system is quite flexible.
Jan 10, 2:57 am
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
and added the thing i wanted for a long time, but never actually got my hands on it: comparison of weilded items, and items lying on the floor. of course, it only compares helmets with helmets, shields with shields, and so on…
Jan 10, 9:01 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
and i decided to implement item comparison as popup window. this info is quite important, and it's hard to look for it in log window. of course, it can be turned off in options, but i don't consider this as cheating: this is the same as if i look at the equipment list, and then try to pickup items, and then try to remember the stats… 'cmon, I.V.A.N. is unforgiving enough to make at least this part slightly more convenient!
Jan 11, 7:35 am
Joined: Apr 2, 2014
Occupation: Navastating
Location: Aslona
Posts: 807
vasiliy wrote
i also took item descriptions from the community fork, and draw them under the list. because why not?

That's awesome!
Jan 11, 1:50 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
i know that everybody love screenshots. so here's another one: proof of concept of proportional font. not everything fixed yet (log window still wraps at the fixed char, lol — i forgot to change it), but the lists seems to be usable. i will prolly not leave this as option (because of too much conditional checks), and will simply use proportional fonts everywhere. let's stop pretending that we are not in graphics mode!

@red_kangaroo: thank you! (and people who actually wrote those descriptions, of course!) implementing descriptions this way is quite easy. i added one method to `felist` — `AddHelpToLastEntry()`, and `Help` field to the entry struct itself. then added code in equipment and inventory list creation methods to actually add help. and then simply do word-wrapping and rendering after drawing the list page.

there is one gotcha, though: you have to call `BackGround.FastBlit(Buffer);` in `felistraw()` to erase previous list contents. in the Good Old Days I.V.A.N. authors tried to avoid excessive redrawing, but meh… we can get away with "just redraw everything on each frame!" these days.


p.s.: sorry, i don't have github account (and generally never send patches to projects with cocs), so i'll resort to lengthy descriptions in the hope that somebody will dive into my code and write something similar to the comm fork.

and of course i am here to try and answer any questions about the code (or at least give some clues). not that i know the code well, though, so most answers will prolly be "your princess is in another castle. also, you are killed by a hedgehog.", but why don't try anyway?
Jan 11, 6:11 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
if you are tracking my git repository, please, re-clone it from the scratch. i switched to Fossil, and git repo is just a mirror now. essentially, git repo was recreated from scratch using fossil export command, and all commit hashes were changed. this is one-time inconvenience, and you can keep tracking the repo as usual after re-cloning. sorry for the inconvenience! but i prefer Fossil these days, and cannot stand using git anymore.
Jan 11, 6:32 pm
Joined: Sep 3, 2024
Occupation: Childcare Provider
Location: Victoria, British Columbia
Interests: Retro gaming, retro computers, TTRPGS, painting and crafting miniatures and terrain, wargames
Posts: 20
Is there an up-to-date windows build for this?

I somehow missed it in 2017 (I mean, I know exactly how I missed it- my now 7 year old second child would have been about a month old at the time lol)
Jan 11, 8:28 pm
Joined: Sep 5, 2010
Interests: make more ivans!
Posts: 232
not yet, sorry. yet i am planning to create win builds when the thing stabilizes a little. for now it works, but crashes frequently (even for I.V.A.N. standards), due to all that new code i added.

just keep an eye on this topic, and you eventually will be able to try it. once i consider it "ready for pre-beta", i plan to public win builds more-or-less regularily (until i decide to make another 7-year pause .
Jump to