What do you use to program your IF?

No, it’s as object-oriented as C#. C++ isn’t object-oriented in Visual Studio.

I haven’t had occasion to learn C# yet, but C++ without object-orientation would not really be C++, at least not by my definition of those terms.

…and with a looser definition, you could call VB6 object oriented, too. But that’s taking the discussion off on a tangent, off topic, a bit pointless (and certainly, along with the other posts on that subject, completely missing the point), so…

C++ supports OOP regardless of what implementation you use (GCC, Visual Studio, Intel C++, whatever.) It’s an international standard. Maybe you’re confusing something here?

Hmm. I can see you’re going to be hard work :wink: Of course programming is creative, but on an intellectual level. To me it is a tool (but fun and satisfying in its own right) used to transfer the make-believe world I see in my head, in my imagination, to the computer screen.

This is why I think writing IF is so damn cool. It is a perfect marriage between the creative/imaginative and the technical/intellectual, if you understand me.

Well said.

VB6 is object-based. VB.NET is fully object-oriented, but as you say that’s going a bit OT!

I felt it was on-topic because your objection to object-oriented languages seemed to be based partly on the premise that Visual Basic isn’t one. I think that you are going to have to ‘go there’ eventually and stop being afraid of OOP. The writing is on the wall.

However, I use i7 and I can highly recommend it. And I agree that it puts the mind in a different, more ‘writerly’ mode; however, it is still very painstaking and meticulous, so that a different mindset does not really translate into being able to code with the same ‘flow’ as a writer writes. But it makes it easier to keep your brain in that writerly place throughout the process. This is really more a question of mental discipline and which tool promotes which kind. I’m sure there are people who can combine both mindsets freely all the time, and thus i7’s promotion of the writer’s mind is irrelevant to them; they can access it at any time, anyway (or else it just isn’t that important to them to be ‘writerly’ b/c they don’t do that kind of game).

Paul.

Yes, I’m sure you are right. I don’t know if it’s just the way my brain works or because I didn’t grow up with OOP, or what, but I just find concepts like classes, polymorphism & inheritance incomprehensible gibberish :confused:. One day I’ll knuckle down and get my head round it. I’m hoping learning I7 will kind of break me in gently.

This is what I wanted to hear; and the reason I gravitated towards it. I’m looking forward to checking it out.

xyzzy, with VB .NET, to write a line, it’s just Console.WriteLine(“TEXT GOES HERE”). Literally. Now, to have objects and stuff like that, then it’s harder, but it’s still simple coding most of the way through.

But, yeah, from what I hear, if you don’t feel like coding a huge bunch (but that’s how game dev works, lucky you’re not using assembly), just use i7.

Inform 7 is also object-based, not object-oriented. It’s also rulebook-based, so it’s not like you have to use objects for everything. There’s a link to the programmer’s guide to Inform 7 in my signature if it helps:

This doesn’t make sense to me; it suggests that using Inform (or some other system) is a sort of (bad) laziness. But it’s not. It’s about the sensible division of labour. If I want to make a bacon sandwich I could grow some wheat, make a mill, mill the wheat, make a starter, buy a pig, rear it, butcher it, cure it, smoke it, make the bread, make a bread oven, bake the bread, grow some lettuce, raise some chickens, plant an olive tree, grow some tomatoes, make some ketchup, and finally get myself a sandwich. Chances are, especially on my first attempt, it isn’t going to be a very good sandwich because all those things are difficult to do and take time to learn. It’s a perfectly valid option if I happen to enjoy all those different things: but if I want to make a sandwich it’s really not smart.

At some point you are going to have to rely on work others have done: whether that is writing an assembler, or a C compiler, or a higher level language, or whatever. This isn’t lazy, it’s sensible. It doesn’t just save time, it makes the final product better.

It’s just the same with IF. Even a “simple” scenario rapidly becomes complex. Printing a line of text is a breeze. But the trick is in deciding what to print when. It’s in that – in the parsing, and the way actions are handled and so forth, that the difficulty lies.

Try coding this simple game:

The player starts out in a kitchen. There is a table and a worksurface which contains a drawer, which is closed. On the table is an juicy looking orange, a glass and a strange orange cube. In the drawer is a knife. There is a door leading north, which is closed and leads into a dining room, where (as it happens) there is a glass of orange juice already waiting on the table for another character.

The player has to open the drawer, take the knife, slice the orange with the knife (which produces two halves of an orange), squeeze the halves into the glass, and then take the glass into the dining room to drink, at which point the “game” ends. S/he can’t open the door if she is holding a full glass of juice. She won’t be allowed to go north until the juice has been squeezed. If she takes the orange cube, a timer starts ticking and the cube explodes in three turns, killing the player (if she is in the same place as the cube when it explodes). The game need implement only a few verbs: “open”, “close”, “examine”, “inventory”, “go” (north, south etc), “put [object] on”, “put [object] in”, “drop”, “cut with [y]”, “squeeze”, “taste”, “drink”, “smell”, “listen”. It must allow “take all”, “take all except”, “take all from”. It must contain reasonably informative error messages to report parser errors or failures – reporting at least failed verbs, nouns that are not understood, and complete failures to understand, and must check and report actions that make no sense in the game world (such as taking an object that is too large to carry, or going in a direction that is not provided). It must make intelligent inferences (for instance “cut orange with knife” should assume that it is the orange and not the orange device that is to be cut). It must allow for saving and restoring and for commands to be undone. It should be playable on Windows, Mac and Linux computers, and be capable of being played online as well (either through a javascript VM or by being playable on a server). You should provide an appropriate suite of debugging verbs, and the ability to compile the game in a way that will disable them.

Once you have implemented such a game you will have got a small part of the way to the facilities that the major IF-specific languages provide. Any moderately experienced writer would be able to code the “game” I have described above in an IF-specific language in a matter of no more than a couple of hours. How long is it going to take to write it from scratch? And what benefit for the player will you get from that?

That’s what I find, too.

I like coding, but I don’t like reinventing the wheel, and I don’t enjoy spending time on . . . I’m not sure what the word is. Higher-order stuff? Meta-game? Internal whatsits? I’m not interested in documenting and implementing everything that needs to go into a save state, or testing my engine on multiple platforms. I hate the sort of mouse-click or parser based rules, and I’m utterly impatient with displays. I’m glad some people don’t find that stuff as deadly as I do, because that means I can take the necessary but not sufficient stuff they’ve done, and work on what I enjoy working on. It also means I have energy to do some programming tasks I would never touch with a ten foot pole otherwise: because I don’t have to program all the commands from scratch, I can contemplate doing some additional commands that make life easier for the player. Because I don’t have to worry about the basic display settings or platform stability, I feel free to tackle a few graphics elements.

I still “code a whole bunch”, but a bigger proportion of coding time is spent in things the player doesn’t take for granted, the game world, characterization, features, and fun stuff.

Woo-hoo, it’s Cloak of Darkness 2! (Cloak of Orange?)

I’m more of a wander around aimlessly guy. Anyway, I never meant it as a bad way of coding, just that if you don’t like coding a whole engine, use i7. It’s not a bad form of laziness, it’s just that coding an engine is a bit excessive. I like excessive.

You sir have, as the cool kids say, won an internet.

Yeah, Campbell Wild is a bad-ass.