--- Log opened Sun Aug 02 00:00:38 2015 --- Day changed Sun Aug 02 2015 20150802 00:00:38-!- ancestral [~ancestral@63.92.240.233] has quit [Quit: i go nstuf kthxbai] 20150802 00:05:14-!- vultraz [~chatzilla@wesnoth/developer/vultraz] has quit [Read error: Connection timed out] 20150802 00:08:53-!- vultraz [~chatzilla@wesnoth/developer/vultraz] has joined #wesnoth 20150802 00:14:10-!- wario [~wario_@unaffiliated/wario] has joined #wesnoth 20150802 00:15:58-!- vultraz [~chatzilla@wesnoth/developer/vultraz] has quit [Ping timeout: 244 seconds] 20150802 00:23:06-!- vultraz [~chatzilla@wesnoth/developer/vultraz] has joined #wesnoth 20150802 00:44:06-!- zookeeper [~lmsnie@wesnoth/developer/zookeeper] has quit [Ping timeout: 250 seconds] 20150802 00:57:24-!- Xara [Yangyf@2001:cc0:2020:4010:6483:311a:ab7b:ada2] has joined #wesnoth 20150802 01:00:26-!- jemadux [~jemadux@unaffiliated/jemadux] has joined #wesnoth 20150802 01:42:04< aeth> ugh so 1.12 doesn't auto-download add-ons... so many MP games have auto-download mods and they often don't even have a centralized server for them 20150802 02:00:19< Shiki> you mean auto-update with auto-download? 20150802 02:01:58-!- wario [~wario_@unaffiliated/wario] has quit [Quit: Leaving] 20150802 02:15:39-!- mattsc [~mattsc@wesnoth/developer/mattsc] has joined #wesnoth 20150802 02:19:01< aeth> Shiki: no 20150802 02:19:13< aeth> Shiki: I mean in a lot of games if you connect to a game it will auto-download the add-on 20150802 02:19:26< shadowm> 1.13.0. 20150802 02:19:32< aeth> The way Wesnoth currently does it is it just tells you what you have to download and then you have to hunt it down 20150802 02:19:41< aeth> shadowm: ah I didn't notice because no one's on 1.13 20150802 02:19:52< aeth> sorry, 1.13.1+dev 20150802 02:19:57< aeth> that might be different than 1.13.1 20150802 02:19:58< shadowm> (Untested by me but I trust the author did a good enough job.) 20150802 02:20:19< shadowm> Yes, it is, but you'll probably not find more than 1 or 2 people on dev at peak hours either. 20150802 02:20:31< aeth> the last dev version that everyone was on was 1.3 back in the 1.2/1.3 days because [set_menu_item], arcane instead of holy, etc., were huge changes 20150802 02:20:45< shadowm> If you absolutely must connect to the 1.13.1 server with master, just use the 1.13.1 port number. 20150802 02:21:03< shadowm> Which is... 20150802 02:21:32< shadowm> 14997. 20150802 02:24:40< aeth> I just need to do one minor change to shops to make them deduct gold and I need to finish implementing the upgrade system. then I'm going to have a playtest of my RPG 20150802 02:24:54< aeth> one day and a few hours late 20150802 02:27:46-!- ArneBab [~quassel@55d44f6c.access.ecotel.net] has joined #wesnoth 20150802 02:30:49-!- ArneBab_ [~quassel@55d45f4d.access.ecotel.net] has quit [Ping timeout: 244 seconds] 20150802 02:31:24-!- ancestral [~ancestral@148.sub-70-197-198.myvzw.com] has joined #wesnoth 20150802 02:33:31< ancestral> aeth: I’ll be able to help playtest your mod tomorrow night, if it’s ready 20150802 02:33:54< ancestral> I could maybe get my friend Aaron in on it, if he’s not busy hanging with his girlfriend 20150802 02:35:39< aeth> it may or may not be ready 20150802 02:35:54< aeth> My code's a mess, Wesnoth's API is a mess, and Lua's a mess of a language. 20150802 02:35:59< aeth> So it could be done in an hour or a week. 20150802 02:37:20< ancestral> 1d8 days 20150802 02:38:54< ancestral> Or in Luaspeak: math.random(7) 20150802 02:40:04< aeth> Lua, the language that makes it so easy to have a syntax error and so hard to spot it 20150802 02:40:11< aeth> thanks to making everything a table 20150802 02:40:24< aeth> and not telling you you messed up that comma until you get to that part of the program 20150802 02:40:28< ancestral> Lisp has lists, Lua has tables 20150802 02:40:46< ancestral> JavaScript has objects 20150802 02:41:06< ancestral> Er, functions 20150802 02:41:23< aeth> everything from no += to 1-index to a lot of other syntax stuff (superficial, really) makes me keep thinking "It didn't have to be like this!" when I use Lua 20150802 02:41:29< ancestral> And WML is… um… 20150802 02:41:30< aeth> because Lua likes to go left when everyone else goes right 20150802 02:41:32< ancestral> WML 20150802 02:41:42< aeth> ancestral: WML is like s-expressions, actually. 20150802 02:41:45< aeth> Almost like it. 20150802 02:41:50< aeth> Except everything's key/value instead of a list. 20150802 02:41:51< ancestral> Yeah, true 20150802 02:41:55< aeth> I guess it's a decent fit to Lua. 20150802 02:41:58< ancestral> JSONy 20150802 02:42:01< aeth> It's almost like a Lua-Lisp-XML hybrid 20150802 02:42:10< ancestral> Yeah, it is very XML-ish 20150802 02:42:16< aeth> not that much 20150802 02:42:22< aeth> 20150802 02:42:27< aeth> no, it's more HTML than XML 20150802 02:42:31< aeth> HTML without attributes 20150802 02:42:49< aeth> or maybe everything's an attribute 20150802 02:46:32< aeth> ah, interesting thing I just caught... and too bad no one was testing it with me 20150802 02:47:04< aeth> thanks to a wrong placement of if/else/etc. if you didn't have enough money to buy things, it wouldn't deduct your gold or the stock in the store, but it would give you the item :p 20150802 02:48:27< ancestral> Niiiice 20150802 02:48:45< ancestral> Reminds me of a game where you make movies 20150802 02:48:51< ancestral> And you have a budget 20150802 02:49:08< ancestral> It was kind of fun, they had real actors and salaries for them 20150802 02:49:19< ancestral> Anyway, you could edit the list and add your own in there 20150802 02:49:41< ancestral> (Presumably the actors with higher budgets were more reliable when it came to your movie being successful) 20150802 02:50:00< aeth> so at the abstraction level of Wesnoth a shop is just a container (like a chest) that deducts your money when you take out of it and gives you money when you put stuff in it 20150802 02:50:10< aeth> that saves a lot of effort in terms of shared code 20150802 02:50:15< ancestral> So let’s say there was bad buzz around it, or some event occurred, you might need to cancel your movie 20150802 02:50:34< ancestral> If the actor you added in had a negative salary, you would make money after you canceled the movie 20150802 02:51:09< aeth> haha 20150802 02:51:30< aeth> that's almost like the plot of the Producers 20150802 02:51:41< aeth> just make Springtime for Hitler: The Movie 20150802 02:51:57< aeth> If it's bad enough you make more money than if it's good! 20150802 02:52:05< ancestral> Yeah 20150802 02:52:09< ancestral> bbl 20150802 02:52:30-!- ancestral [~ancestral@148.sub-70-197-198.myvzw.com] has quit [Read error: Connection reset by peer] 20150802 02:52:46< aeth> I added in Elvish Lady, a lvl 3 unit with absolutely no attack, to the summon list 20150802 02:52:54< aeth> I wonder if anyone will accidentally summon her 20150802 02:55:15< Shiki> for sure somebody tries it out ^^ 20150802 02:55:51< aeth> they're sorted by level too 20150802 02:55:57< aeth> so somebody will be like "oh cool a new lvl 3 unit!" 20150802 02:56:16< aeth> they're not even useful for blocking because they'll give too much exp 20150802 02:58:47< aeth> I'm doing this on Github and I'm bugtracking using a bunch of lines in a todo text file XD 20150802 02:58:50< aeth> https://github.com/Aethaeryn/wesnoth-umc/blob/master/Master_of_Dungeons/todo#L107 20150802 03:00:07< aeth> And yes I even added gender changing and tested it. MOD is supposed to do just about everything Lua can do. 20150802 03:00:26< Shiki> hmmm yeah, you have quite a lot written there....^ 20150802 03:00:44< aeth> it's kind of scary to have 170 lines, but I did document everything I guess 20150802 03:01:19< Shiki> gender changing? Well, who does that xD 20150802 03:01:33< aeth> Gender changing actually has to be there for one important reason. 20150802 03:01:48< aeth> You start as a peasant (male only of course), and you transform into the unit you want to be. 20150802 03:02:13< Shiki> I have a paper block next to me, everytime I find something I write it there - and whicvh units are affected. Takes ages to fix one thing^^ 20150802 03:02:21< aeth> So without gender changing implemented, you can only be male characters unless the unit you choose is female only (you'll still be male, just show up as female... if you then transform to mage you'll be the male variant) 20150802 03:02:51< aeth> peasant -> elvish shyde -> mage... male mage 20150802 03:03:23< Shiki> then it must be there Ö 20150802 03:03:24< aeth> So if you want to transform to a female character your gender needs to be changed separately, apparently. 20150802 03:03:38< aeth> because fresh elvish shydes will be female mages 20150802 03:04:06< aeth> no one will notice, of course, unless for some reason you transform to a character with two possible genders. 20150802 03:05:20< aeth> I test literally everything. This is way easier for software that doesn't have to be tested by repeatedly launching Wesnoth and running something. 20150802 03:05:23< Shiki> I found yesterday some fairy characters werde male.... it seems nobody cared about ir since 2006 20150802 03:06:50< Shiki> taht really takes time, indeed... I came today to the point to agree with this A programmer can write 10 lines of code / day 20150802 03:08:19< aeth> it's really funny for Wesnoth add-ons 20150802 03:08:28< aeth> I can do hundreds of lines in less than an hour 20150802 03:08:40< aeth> or I could spend three hours trying to hunt down a handful of lines 20150802 03:09:39< Shiki> I belong to the last side :P 20150802 03:10:10< aeth> well there's no limit for e.g. this file: https://github.com/Aethaeryn/wesnoth-umc/blob/master/Master_of_Dungeons/data/units.lua 20150802 03:10:40< aeth> all I need is the name of the unit and I can get its cost, its picture, etc., and put it in a menu item 20150802 03:11:14< aeth> They could add hundreds of new units tomorrow and it'd take me a few minutes to update the summoners/summons list and most of the time would be thinking which units summon 20150802 03:11:54< aeth> the further I am from using wesnoth.foo() or WML directly, the easier it is to write. 20150802 03:12:01< Shiki> how many units do you have for now 20150802 03:12:18< Shiki> all ones from mainline or cusom ones too 20150802 03:12:26< aeth> every unit in the default game except for the Khalifate 20150802 03:12:43< aeth> I could add them fairly quickly, most of the time would be testing summoning each one individually to typo check 20150802 03:13:38< aeth> Custom units from other people's eras would also be trivial to add, I just need their names. Although, I might have to modify the image finding part of the code. 20150802 03:14:22< aeth> It's not on the add-ons server so I really don't want to make downloading a requirement 20150802 03:14:40< aeth> I load in all the Lua as macros so that downloading isn't required. 20150802 03:16:16< aeth> If defining WML tags is powerful enough, I should be able to turn most of this into Lua-defined WML. The file I linked to would actually be kind of hard because WML doesn't really have a list data type afaik. 20150802 03:17:01< aeth> oh wow, the syntax is just so messy I'm not sure I'd want to use it. http://wiki.wesnoth.org/VariablesWML#Array 20150802 03:18:33< aeth> I wonder if there's a VALUE macro in WML, I don't think it would really be worth putting in WML without making each unit a one-liner 20150802 03:18:49< Shiki> you can´t dic#scuss taht with me:P I failed today making an if-statement with some - not sure how it is called - argument which you give to a macro 20150802 03:19:09< aeth> oh conditionals are terrible in WLM 20150802 03:19:10< aeth> *WML 20150802 03:19:35< aeth> I would much rather implement 100% of the logic in Lua and just make the configuration stuff WML 20150802 03:19:52< aeth> WML turns one liners into 20 liners. 20150802 03:20:47< Shiki> well, the solution was to instead checking in the makro which soundmakro to use, just giving the soundmakro to the makro ^^ 20150802 03:20:49< aeth> If there was a Lua equivalent of [set_menu_item] I wouldn't have to use many WML conditionals. Unfortunately, I have to use them even in Lua for a lot of things 20150802 03:21:28< shadowm> wesnoth.wml_actions.set_menu_item 20150802 03:21:58-!- Appleman1234_ [~Appleman1@KD106155084146.au-net.ne.jp] has joined #wesnoth 20150802 03:22:09-!- Appleman1234 [~Appleman1@KD106155067033.au-net.ne.jp] has quit [Ping timeout: 255 seconds] 20150802 03:22:19< Shiki> how are lua and WML actually connected ? I just have WML in the era which I edit - and used WML the first time two weeks ago^^ 20150802 03:22:25< shadowm> It's Lua, it's just that you need to pass a WML table to it. But then again, purer Lua API functions have the same issue. 20150802 03:22:40-!- Appleman1234_ is now known as Appleman1234 20150802 03:22:44< shadowm> (wesnoth.get_unit amongst countless others.) 20150802 03:22:52< aeth> shadowm: you can't avoid using WML conditionals afaik 20150802 03:23:06< shadowm> Yes, I said you need to pass a WML table to it. 20150802 03:23:19< aeth> and you also have to afaik have a [lua] code = "some_function()" [/lua] in it 20150802 03:23:30< aeth> which is really awkward, having to construct strings and have so many functions top level 20150802 03:23:51< shadowm> You could implement your own wrapper around that, of course. 20150802 03:24:01< aeth> Still has to be a string afaik 20150802 03:24:05< aeth> And I did implement a wrapper 20150802 03:24:10< aeth> quite a large wrapper 20150802 03:26:19< aeth> It's possible that this is the future to avoid at least some of the awkwardness of writing interface stuff in Lua. http://wiki.wesnoth.org/LuaWML:Display#wesnoth.show_dialog 20150802 03:26:45< aeth> Still requires writing literal WML tables, though. And it can't replace [set_menu_item], only [message] 20150802 03:28:40< shadowm> "avoid [...] awkwardness [...] Lua GUI2 entry point" 20150802 03:28:46 * shadowm laughs out loud. 20150802 03:29:03< aeth> I'm an optimist 20150802 03:29:24< aeth> even though I took a more than 3 year break from writing stuff for WML after trying to code a Lua GUI2 UI last time I tried 20150802 03:29:31< aeth> s/for WML/for Wesnoth/ 20150802 03:29:36< shadowm> Maybe some day when I get around to figure out how to pass full WML data to Lua in the global context. 20150802 03:30:08< shadowm> Then we will be able to brace-include GUI2 WML instead of doing this absurd Lua translation nonsense. 20150802 03:30:28< shadowm> Shiki: All WML events are passed to the Lua engine. 20150802 03:30:37< aeth> I think more of the engine needs to be written in Lua for Lua not to be awkward. 20150802 03:31:29< shadowm> Shiki: Some parts of the core WML API (for example, [clear_variable]) are implemented in Lua, others are implemented in C++ directly. 20150802 03:31:46< shadowm> *action WML 20150802 03:32:38< shadowm> Regardless of what a given WML action tag is implemented in, you can call its implementation from Lua or (not recommended) even override it in Lua. You can also add your own WML tags using Lua. 20150802 03:33:30< shadowm> So Lua serves as a back end for WML event processing but it can also sit in front of it. 20150802 03:33:52< aeth> Yes, it gets really messy. 20150802 03:34:07< aeth> I hope SDL 2 brings a GUI 3. 20150802 03:34:53< Shiki> hmmm, so WML is the "nicer" version, to avoid writing lua or C++ 20150802 03:35:00< aeth> It's sad how it's years after 1.3 and we're still using [set_menu_item] and [message] with [option] 20150802 03:35:10< shadowm> SDL 2 will not bring anything other than SDL 2. 20150802 03:35:29< shadowm> It can only *facilitate* some behind-the-scenes stuff. 20150802 03:35:34< aeth> Shiki: The problem is that WML is a terrible programing language. For data it's OK, but it's basically a language of Woses. It takes a very long time to say anything meaningful. (And yes, that's ents from LotR, but woses are knock offs) 20150802 03:35:49< shadowm> (And if we ever get OpenGL, we might also get shaders and other fancy crap.) 20150802 03:36:06< aeth> I'm impressed that Wesnoth does anything without shaders. 20150802 03:37:03< aeth> OpenGL 3.0 was... August 11, 2008. And afaik Linux distros should be able to handle up to 3.3 at a minimum with just the free drivers. 20150802 03:37:58< aeth> Shiki: C++ is also a terrible programming language, but it's hard to avoid it in games programming 20150802 03:38:32< aeth> C++, the culture that brings you great variable names like e. (The culture surrounding the language is often as important for readability as the language itself.) 20150802 03:39:29< shadowm> > e 20150802 03:39:43< Shiki> Well, I didn't learn it yet. I wonder if I ever will. Probably yes... :) Had to do with C, Java, Assembler and Haskell so far 20150802 03:39:44< shadowm> That's a bad name? 20150802 03:39:46< shadowm> :| 20150802 03:40:47< Aginor> aeth: I think that sounds like the name for a variable dealing with an event :) 20150802 03:42:13< aeth> Aginor: yes but it can also be 2.71828 :-p 20150802 03:42:20< aeth> although I guess that would be E 20150802 03:42:50-!- mattsc [~mattsc@wesnoth/developer/mattsc] has quit [Quit: So long and thanks for all the fish.] 20150802 03:43:02< Aginor> Math.E most likely :D 20150802 03:43:02< aeth> shadowm: yes, I prefer having meaningful variable names that people can understand at a glance 20150802 03:43:11< aeth> although to be fair e for event is fairly common 20150802 03:43:18< shadowm> ANyway, whatever floats your boat I guess. If I was paid a dollar for every single time people have suggested rewriting everything in I'd be able to purchase a yacht and go on vacation in the Caribbean by now. 20150802 03:43:30< aeth> this ruined the way I program: https://www.youtube.com/playlist?list=PLE18841CABEA24090 20150802 03:43:33 * shadowm out. 20150802 03:44:01< aeth> Scheme has a very good way to name stuff 20150802 03:44:19< aeth> I particularly like how one of the example procedures in SICP is literally called good-enough? because that really is what it does 20150802 03:44:51< aeth> Of course your ALGOL-based languages won't ever have perfectly meaningful variable or function names because they can't use most punctuation 20150802 03:45:47< aeth> also if I was doing my code in Lisp I'd be able to use symbols for most of the things I am using strings for in Lua, which I'm guessing would reduce memory and increase the speed a bit (when doing an equivalence test) 20150802 03:46:18< aeth> (I am not suggesting rewriting Wesnoth in Scheme. The libraries just aren't there.) 20150802 03:46:27< aeth> (SDL is basically half way to a game engine by itself.) 20150802 03:59:38< aeth> Other languages have SDL bindings to varying degrees, of course, but it's not going to feel like idiomatic code if it's not C or C++ 20150802 04:03:14< aeth> Multi-paradigm languages that support functional programming more than traditional languages (or even newer languages like Python) are way easier to understand code in because they limit mutation and they have a much better way of handling state. 20150802 04:03:38< DeFender1031> shadowm, you should rewrite wesnoth in c++. Here, have a dollar. 20150802 04:03:51< aeth> rewrite Wesnoth in Go 20150802 04:03:59< aeth> rewrite Wesnoth in Terra (a way to write C in Lua) 20150802 04:04:11< aeth> rewrite Wesnoth directly in web assembly. 20150802 04:04:37< aeth> rewrite Wesnoth in WML! implement WML through WML! 20150802 04:05:21< Aginor> aeth: I'm a newbie to wesnoth, but I think that the quickest way to kill the project would be to start a rewrite for language X, there's historically a really bad track record for those kind of undertakings 20150802 04:05:38< aeth> Aginor: I was joking but... 20150802 04:05:52< aeth> Aginor: I think the largest issue is if you rewrite Wesnoth you'll lose some platform support to where it can already run 20150802 04:06:20< aeth> Aginor: Most of the value of Wesnoth is in wesnoth/data not in wesnoth/src, a lot of the C++ is a mess that only people who have left the project can understand. 20150802 04:07:00< Polsaker> hahaha 20150802 04:07:18< aeth> If someone wrote a way to handle wesnoth/data, it would be good enough (though MP-incompatable). The hardest part would probably be handling the complex Lua-WML interaction 20150802 04:09:06< shadowm> 01:05:54 Aginor: I think the largest issue -- No. 20150802 04:11:15< aeth> shadowm: What do you mean no? For most languages people could rewrite Wesnoth in, porting it to all of the platforms Wesnoth can run on would be next-to-impossible. That's... a lot bigger of an issue than most of the others. 20150802 04:11:18< shadowm> The largest issue is that no single person can rewrite a program of this size in another language within a definite timeframe (especially if they're paid even less than the average sweatshop coder) and then continue to maintain it and/or form a new development team around it in record time. 20150802 04:11:28< shadowm> Everything else is immaterial. 20150802 04:11:42< aeth> oh? 20150802 04:11:46< shadowm> It is immaterial because that first essential requirement is not fulfilled. 20150802 04:12:06< shadowm> You can't worry about platform support when your rewrite isn't happening in a realistic setting at all. 20150802 04:12:22< aeth> cpp is a very slow language to program in. It doesn't even have an REPL and the compile times take a long time for a large project like Wesnoth. So you don't get instant feedback. 20150802 04:12:44< aeth> I think you're underestimating how much better to use most other languages are (although quite a few would be impractically slow, e.g. Python) 20150802 04:12:45< shadowm> It's not about compiled vs. interpreted. 20150802 04:12:53< Aginor> shadowm: that's kind of what I was trying to get at :D 20150802 04:12:59< shadowm> It's about the amount of effort it takes to write the code alone. 20150802 04:13:03< aeth> no, it's not about compiled vs. interpreted. Common Lisp is a compiled language with an excellent REPL, one of the best. 20150802 04:13:47< shadowm> And then to maintain it. 20150802 04:14:50< shadowm> I don't know about gfgtdf, but I only know C++, Perl, very little Python, and PHP. E_H knows Python and to a lesser extent C++. 20150802 04:14:58< Aginor> wesnoth has around 400K lines of code, including headers and comments 20150802 04:15:04< shadowm> These are your three active engine coders. 20150802 04:15:21< aeth> Aginor: If I were to rewrite Wesnoth in Common Lisp, I could probably do it in under 40K lines 20150802 04:15:39< shadowm> If you want to rewrite Wesnoth in whatever language, you'll have to either take care of 400K lines of code yourself for the next 10 years or somehow conjure up a development team out of thin air. 20150802 04:15:43< Aginor> I'd expect that to rewrite something of that, especially if you don't know the source and expected behaviour, would be around 2 man years to get a got replicate 20150802 04:15:54< aeth> Lisps have real macros, which is much more powerful metaprogramming than C or C++ offer. Lisps also provide a nice s-expression syntax that roughly maps onto WML. 20150802 04:16:17< Aginor> anyway, I'm not going to argue about this 20150802 04:16:27< Aginor> aeth: give it a go and tell us how you get on :) 20150802 04:16:32< shadowm> Taking care of all the subtleties of Wesnoth's design and advancing it would take you forever, and again, you are not being paid a single cent. 20150802 04:16:34< aeth> I'll tell you what. 20150802 04:16:52< aeth> I'll write a libwml in Common Lisp, and then when I get further along on my SDL2 wrapper I'll consider writing more pieces of Wesnoth in Common Lisp. 20150802 04:17:14< shadowm> The WML parser and preprocessor are dead simple to implement. 20150802 04:17:15< aeth> I think you'll find that it's considerably more concise in LoC and also considerably faster to code because of the REPL and fast compile time. 20150802 04:18:08< shadowm> So good luck implementing the game logic, WML event processing and Lua interpreter, the add-ons client and server, and the MP client and server. 20150802 04:18:22< aeth> The Lua interpreter would probably be the hardest part. 20150802 04:18:23< Shiki> Isn't LI 20150802 04:18:45< aeth> The more foreign things you have to interface with, the harder it becomes. SDL's already basically wrapped. Lua isn't. 20150802 04:18:53< shadowm> Don't forget game rendering engine, the image cache API, GUI2, the ttext pipeline, the AI engine and default implementation, and Thunderstone. 20150802 04:19:06-!- oldlaptop [~quassel@50-107-125-36.adr02.mskg.mi.frontiernet.net] has quit [Ping timeout: 240 seconds] 20150802 04:19:10< Aginor> shadowm: Thunderstone? 20150802 04:19:23< shadowm> Yes. 20150802 04:19:33< aeth> shadowm: the fastest thing to do would probably be to make it MP-incompatable and GUI incompatable because a rewrite would provide a better GUI and I don't think many add-ons use GUI2 20150802 04:19:35< Aginor> what's "Thunderstone"? :) 20150802 04:19:38< shadowm> It's not part of Wesnoth and in fact does not properly exist anymore. 20150802 04:19:53< shadowm> But it's a good example of aeth's track record with overambitious projects. ¬_¬ 20150802 04:20:00< Aginor> ah 20150802 04:20:32< aeth> Aginor: I tried to do a total conversion of Wesnoth to sci fi a long time ago. It didn't work well because (1) implementing so many factions means quite a few animations and (2) the Wesnoth engine isn't very good when you try to push it too much past what it was designed for. 20150802 04:20:58< celticminstrel> SDL doesn't feel idiomatic even in C++. 20150802 04:21:04< celticminstrel> It's a C API. 20150802 04:21:50< Aginor> anyway, instead of waffling here, I'll go and make real waffles 20150802 04:22:19< shadowm> That list is also missing the terrain builder, the theme UI, the translation API, the terrain engine, the help system, the story screen UI, the Whiteboard, and the map editor. 20150802 04:23:04< DeFender1031> mmmm... waffles. 20150802 04:23:50-!- EliDupree [~quassel@66-189-34-122.dhcp.oxfr.ma.charter.com] has joined #wesnoth 20150802 04:24:14-!- EliDupree [~quassel@66-189-34-122.dhcp.oxfr.ma.charter.com] has quit [Remote host closed the connection] 20150802 04:25:00< shadowm> "I don't think many add-ons use GUI2" 20150802 04:25:16< celticminstrel> I think that's probably an irrelevant statement. 20150802 04:25:27< shadowm> Who cares about numbers when both the release manager and PR guy use GUI2 in their add-ons. :p 20150802 04:25:37-!- oldlaptop [~quassel@50-107-125-36.adr02.mskg.mi.frontiernet.net] has joined #wesnoth 20150802 04:25:52< celticminstrel> If it's made it into a release, you have to maintain compatibility with it in the next release, just in case someone did use it. 20150802 04:25:54< shadowm> That obviously means that any effort that somehow drops the Lua GUI2 API would be instantly rejected. 20150802 04:26:07< aeth> It's not irrelevant. If you were going to parse wesnoth/data and give semantics to it, you'd focus on the stuff people use the most. In fact, you'd focus on mostly mainline rather than any add-ons 20150802 04:26:09< celticminstrel> Ideally you'd maintain backwards compatibility with it forever, but that'd be a nightmare. 20150802 04:27:00< aeth> celticminstrel, shadowm: I think we're using different definitions here of rewrite. By rewrite I mean "fork and run wesnoth/data" not "try to replace wesnoth mainline" 20150802 04:27:02< shadowm> Wesnoth's future is in UMC land, not mainline land. 20150802 04:27:24< shadowm> That's my regime's motto. 20150802 04:27:47< celticminstrel> If your fork/clone/whatever is incompatible with existing add-ons, it probably won't be very successful. 20150802 04:28:17< aeth> If the fork/clone/whatever tries to become compatible with existing add-ons in its first release, it will never be successful because it will never be released. 20150802 04:28:18< shadowm> People want to go into the MP server, select Ageless Era, and play Colosseum or whatever. 20150802 04:28:23< shadowm> They don't want to play HttT. 20150802 04:29:07< shadowm> It sounds extreme, but it doesn't take much effort to go to the MP server and see that most people play with add-on of some sort. 20150802 04:29:16< aeth> ok, and? 20150802 04:29:33< Shiki> I play only campaigns ^^ 20150802 04:29:51< aeth> I guess you could start by trying to parse only the most popular add-ons instead of only the mainline 20150802 04:30:00< Shiki> and besides one all mainline ones 20150802 04:30:01< shadowm> You need to look at this as if it were a commercial endeavor, not an academic project. 20150802 04:30:08< aeth> but my point is, you can't support literally everything if you wanted to rewrite Wesnoth in another language just to show how awful C++ is 20150802 04:30:10< celticminstrel> No, you start from a specification. 20150802 04:30:17< celticminstrel> If it doesn't exist, you start by creating one. 20150802 04:30:32< celticminstrel> Of course you could support literally everything. 20150802 04:30:34< aeth> WML's decently documented for a proprietary language 20150802 04:30:44< celticminstrel> You think so? 20150802 04:30:57< shadowm> It's primarily people treating Wesnoth as a staging grounds of sort for academically-sound ideas (like GUI2) that have left us to maintain their unmaintainable legacy. 20150802 04:30:57< aeth> You don't do a specification, though. You do bug-for-bug compatability with the popular stuff. Otherwise it's academic. 20150802 04:31:00< celticminstrel> The wiki is a bit lacking as documentation. 20150802 04:31:05< aeth> Web browsers don't juse parse perfect HTML 20150802 04:31:20< aeth> celticminstrel: "for a proprietary language" 20150802 04:31:25< celticminstrel> Well sure, you can do that if you want. 20150802 04:31:28< shadowm> *sorts 20150802 04:31:46< aeth> celticminstrel: most proprietary game languages are basically just guess 'n check reverse engineering if you want to use them. 20150802 04:31:51< aeth> At least Wesnoth has official documentation. 20150802 04:31:56< celticminstrel> I suppose. 20150802 04:32:34< celticminstrel> But I wouldn't consider it a specification, so if you started by writing up a specification, it'd probably include most of those bugs anyway. 20150802 04:32:37< shadowm> Ultimately, what people want to do is play a game, not bask in the glory of perfect pure functional programming, and our mission is to give them a game to play. 20150802 04:32:46< aeth> The WML-like syntax helps in writing something that can handle it, too. (It doesn't help in writing it, though. So verbose.) 20150802 04:33:08< aeth> shadowm: pure functional programming is nonsense, too restrictive. 20150802 04:33:36< aeth> shadowm: but doing things without any decent functional programming support at all is just asking to have the code LoC grow to incredibly unmaintainable lengths rather quickly. 20150802 04:33:39< shadowm> You can substitute "pure functional programming" with any other academic buzzword and the same point applies. 20150802 04:33:45< celticminstrel> Yeah, giving up side-effects is a bit much. 20150802 04:33:57< aeth> Use map instead of a loop and you immediately save a few lines right there every time you loop. 20150802 04:34:05< celticminstrel> You can get functional programming in C++. 20150802 04:34:06< aeth> You can very quickly get the line count very low. 20150802 04:34:14< aeth> celticminstrel: poorly 20150802 04:34:21< celticminstrel> Even if you don't want to require C++11. 20150802 04:34:25< aeth> C++ is too designed for one certain right paradigm. 20150802 04:34:30< celticminstrel> It's not. 20150802 04:34:46< celticminstrel> It's more of a mixing pot of several paradigms. 20150802 04:34:51< aeth> If you think C++ is multi-paradigm enough, you haven't programmed in exotic enough languages yet 20150802 04:35:06< celticminstrel> It's multi-paradigm. I can't speak for the "enough" part. 20150802 04:35:28< celticminstrel> I know C++, JavaScript, Python, PHP, and maybe one or two others. 20150802 04:35:40< celticminstrel> Oh, Java. 20150802 04:35:43< aeth> JavaScript, Python, PHP, Lua, etc., are all basically the same thing. 20150802 04:35:47< celticminstrel> Most of those are pretty object-oriented. 20150802 04:35:48< aeth> They have extreme similarities 20150802 04:36:07< celticminstrel> ...they're really not the same thing, 20150802 04:36:24< celticminstrel> Lua/JavaScript are very similar, perhaps. 20150802 04:36:48< celticminstrel> Their object-oriented model is prototype-based. Python's is class-based. 20150802 04:37:03< celticminstrel> PHP is, well... probably best left alone. 20150802 04:37:19< aeth> Most scripting languages have something like a hash and something like a list or an array, and some OOP. 20150802 04:37:42< aeth> Some combine their hash-like structure and their array-like structure into one thing. 20150802 04:37:45< celticminstrel> "scripting languages" 20150802 04:38:16< aeth> Useful category. You don't program an operating system in JavaScript (yeah, sure I'm sure someone has as an academic experiment). 20150802 04:39:01< aeth> Tcl and Lua in particular are designed for interfacing with C and C++. PHP is designed for web scripting. Perl is designed to be better than bash for system stuff. 20150802 04:39:20< aeth> Python is way too slow and restrictive, basically requiring the faster libraries to be written in another language. 20150802 04:39:32< celticminstrel> I'm not sure PHP is designed at all. More like thrown together and stirred up a bit. 20150802 04:39:34< aeth> JavaScript has script in the name, although yes there is now a JS for everything religion 20150802 04:39:45< aeth> and yes PHP is probably the worst of them all 20150802 04:39:51< aeth> in terms of trying to intuit how things work 20150802 04:40:10< aeth> iirc PHP is the one that mixes camelCase with underscore in its standard library 20150802 04:40:18< celticminstrel> PHP is basically a mess. 20150802 04:40:46< aeth> They're all basically a mess. Lua lacks quite a bit of very basic syntactic sugar, for instance. 20150802 04:40:58< celticminstrel> Like what? 20150802 04:41:02< aeth> JavaScript is horrible, but too much money is in it so they've been improving it. 20150802 04:41:22< aeth> celticminstrel: very_long_variable_name[foo][foo] = very_long_variable_name[foo][foo] + 1 20150802 04:41:30< aeth> instead of += 20150802 04:41:35< aeth> or ++ 20150802 04:41:47< celticminstrel> Compared to PHP though, Python/JS aren't really a mess. (They're a bit messy, sure, but nothing like PHP. But then, C++ is a bit messy too.) 20150802 04:41:53< celticminstrel> Oh, Lua doesn't have +=? 20150802 04:42:07< celticminstrel> I'm not as familiar with Lua. 20150802 04:42:17< aeth> Lua probably will give you the most difficulty if you're coming from another similar language. It lacks a lot of things, it does a lot of things subtly different, and it is 1-based in its indexing 20150802 04:42:22< celticminstrel> Python doesn't have ++, but at least it has += 20150802 04:42:36< celticminstrel> I don't really mind 1-indexing. 20150802 04:42:39< DeFender1031> i tend to like JS. My only issues with it are lack of reference variables and wacky handling of the "this" keyword. 20150802 04:42:52< celticminstrel> I like JS too, actually. 20150802 04:43:06< aeth> I despise JavaScript, mainly because I'm forced to use it. 20150802 04:43:20< celticminstrel> I've found the prototype-based inheritance can be more useful than class-based inheritance. 20150802 04:43:32< aeth> Don't worry, though, the web browsers have come up with the solution now... to let you use C and C++, two languages that are way slower to code in than JavaScript. 20150802 04:43:42< celticminstrel> Eh? 20150802 04:43:51< aeth> (Garbage collection isn't planned for web assembly yet, so you can't use nicer GC'd languages than JavaScript in the browser for now.) 20150802 04:43:56< DeFender1031> JS would be better if "this" in a scope other than "new Whatever()" or "something.whatever()" referred to the function's parent scope's this, rather than just jumping back to window. 20150802 04:44:11< aeth> celticminstrel: if you want to see a nice object system, take a look at Common Lisp's CLOS 20150802 04:44:17< celticminstrel> Yeah, that would be nicer, DeFender1031 20150802 04:44:39< DeFender1031> but unfortunately, the language is too mature for them to change that behavior now. 20150802 04:44:43< aeth> celticminstrel: instead of having the methods live with an object, they are determined by generic functions in CLOS. So you can have something that's basically a method to more than one object at the same time. 20150802 04:44:55< DeFender1031> then again, they could do it in a manner similar to "use strict"... 20150802 04:45:01< celticminstrel> I think you can do that in JS. 20150802 04:45:07< DeFender1031> actually no. that doesn't mess with behavior. 20150802 04:45:14< DeFender1031> this would 20150802 04:45:18< celticminstrel> Since you can just assign the same function to an attribute on another object. 20150802 04:45:23< aeth> iirc in CL it's (defmethod foobar ((x foo-object) (y bar-object)) ...) 20150802 04:45:43< celticminstrel> ...what's x and y. 20150802 04:45:59< aeth> arbitrary variable names so you can tell the difference between type and variable name 20150802 04:47:01< celticminstrel> I don't really get it. 20150802 04:47:04< aeth> The methods don't live with the objects at all. 20150802 04:47:13< aeth> It's a very different way of doing OOP. 20150802 04:47:26< aeth> You don't put the methods in the class definition. 20150802 04:47:47< celticminstrel> You don't do that in JavaScript, either. Because there is no class. 20150802 04:48:02< celticminstrel> Same in Lua, actually. 20150802 04:48:06< aeth> which is a terrible idea in both imo 20150802 04:48:14< celticminstrel> Not having classes? 20150802 04:48:20< aeth> take apart a web game in JavaScript in Firefox's debugger 20150802 04:48:20< celticminstrel> Like I said, it can be useful. 20150802 04:48:35< aeth> it's really hard to understand what's going on in the debugger because of the way JavaScript's objects work 20150802 04:48:42< aeth> I guess that's a feature for people who don't want me cheating :-p 20150802 04:49:09< celticminstrel> I don't remember having much of an issue with that. 20150802 04:49:20< aeth> It might just be whatever odd framework of the year people are using 20150802 04:49:27< aeth> That's the real problem with JavaScript 20150802 04:49:37< aeth> The way people code it changes faster than I can be bothered to keep up with. 20150802 04:49:41< aeth> It's very fad-driven. 20150802 04:49:46< celticminstrel> Well, if you use some framework to simulate class-based inheritanve, it could complicate stuff, I suppose. 20150802 04:49:52< celticminstrel> ^inheritance 20150802 04:51:02< aeth> lol I use something in my add-on to simulate a class definition in Lua and it does complicate stuff. 20150802 04:51:03-!- Appleman1234_ [~Appleman1@KD059138030099.au-net.ne.jp] has joined #wesnoth 20150802 04:51:14< aeth> It's just a 6-line thing too 20150802 04:51:33< celticminstrel> It can actually get even more complicated in Lua, since you can overload the indexing operator. 20150802 04:51:38< celticminstrel> Which JS doesn't allow for. 20150802 04:51:44< aeth> Lua tables are ridiculous 20150802 04:52:22< aeth> I mean, it's novel but there's no way Lua does things the fast way. 20150802 04:52:22< DeFender1031> in javascript, there are sort of classes... there are prototypes and constructors, the latter of which can be used to add on more functions... 20150802 04:52:38< celticminstrel> Those aren't really classes, though. 20150802 04:52:47< celticminstrel> Because any object can be a prototype for another object. 20150802 04:53:19< aeth> I'm not that big of a fan of OOP. 20150802 04:53:25-!- Appleman1234 [~Appleman1@KD106155084146.au-net.ne.jp] has quit [Ping timeout: 244 seconds] 20150802 04:53:35< DeFender1031> true, but you can OO pretty much the same way once you figure out the syntactic equivalents of private and public... no "protected" though. 20150802 04:54:20< aeth> Every now and then (several times in a program) there's something that's a perfect fit for an object, but I don't like languages that encourage objecting everything like Lua or JavaScript. 20150802 04:54:20< celticminstrel> You can't do private and public that way. 20150802 04:54:20< celticminstrel> To get private and public you need to use closures. 20150802 04:54:20< DeFender1031> exactly what i'm referring to 20150802 04:54:26< celticminstrel> Which means the "methods" are defined within the constructor function. 20150802 04:54:33< DeFender1031> and anything public can be subsequently modified by anything... 20150802 04:54:48< celticminstrel> Thus each "instance" has its own unique copy of the "methods". 20150802 04:54:51< DeFender1031> so you have to just trust that noting is screwith with your methods... 20150802 04:54:53< aeth> DeFender1031: right, making it trivial to cheat in JavaScript games. 20150802 04:55:05< celticminstrel> Personally, I don't really feel it's worth it. 20150802 04:55:24< aeth> DeFender1031: just pause the game, take it apart in Firefox's debugger, find the right object, find the thing that stores the data, and alter the numbers a bit 20150802 04:55:27< aeth> then unpause 20150802 04:55:30< aeth> :D 20150802 04:55:30< celticminstrel> But your mileage may vary. 20150802 04:55:33< DeFender1031> aeth, I should send you the screenshot of the time i played a perfect game of 2048... 20150802 04:55:36< DeFender1031> ;) 20150802 04:55:56 * Aginor eats waffles and watches the drama 20150802 04:56:23< DeFender1031> drama? i thought we were all mostly agreeing 20150802 04:56:44< Aginor> I started with the backlog :D 20150802 04:57:06< aeth> DeFender1031: probably the backlog of shadowm thinking that rewriting Wesnoth in a more concise language is impossible 20150802 04:57:20< aeth> It's possible, it just probably wouldn't be complete, or get users. 20150802 04:57:23< DeFender1031> ah 20150802 04:57:31< celticminstrel> Of course it's not impossible, and could definitely be complete, but it's pretty pointless. 20150802 04:57:41< celticminstrel> It's really just a waste of effort. 20150802 04:57:45< aeth> It's pretty pointful 20150802 04:58:04< aeth> It would show that C++ is actually, despite the common wisdom, a terrible language for computer games. 20150802 04:58:17< celticminstrel> It would show nothing of the sort. 20150802 04:58:31< celticminstrel> Why do you feel C++ is terrible for computer games, though? 20150802 04:58:48< DeFender1031> ah, now we're back to the drama :P 20150802 04:58:51< shadowm> Yes, aeth, but what would the cost be? 20150802 04:58:52< Aginor> aeth: unless you can actually do a study, with objective evaluation criteria, you haven't shown anything 20150802 04:59:00< celticminstrel> What shadowm said. 20150802 04:59:04< Aginor> and one datapoint only gives you anecdotal evidence 20150802 04:59:07< celticminstrel> And Aginor. 20150802 04:59:34< celticminstrel> I won't argue that C++ is the best language for computer games, but I don't think it's terrible either. 20150802 04:59:54< aeth> celticminstrel: I have a strong dislike for any language that makes it unnecessarily complicated to do simple things, which would probably put Java near the top of my list. 20150802 04:59:55< Aginor> I think the best language is what you can find people willing to help out in. 20150802 04:59:57< shadowm> I said this before. We ought to look at Wesnoth as a commercial endeavor, not an academic research project. We're not GNU Hurd, for god's sake. 20150802 05:00:15< celticminstrel> What simple things does C++ make it unnecessarily complicated to do? 20150802 05:00:16< shadowm> If you can't debate that argument, everything else is pointless. 20150802 05:00:19-!- Appleman1234_ is now known as Appleman1234 20150802 05:00:23< Aginor> shadowm: I agree with that statement 20150802 05:00:34< aeth> celticminstrel: program interactively. You have to build huge IDEs to do that. In many languages, it's much simpler. 20150802 05:01:01< DeFender1031> what does that mean practically? 20150802 05:01:04< Aginor> aeth: what's interative programming? Can you give me a consice description? 20150802 05:01:24< celticminstrel> ...does that even have anything to do with the language itself? It sounds like you're just complaining that it takes time to compile your C++ code. 20150802 05:01:36< aeth> Aginor: Coding via an integrated REPL, editor, debugger, compiler, basically. 20150802 05:01:49< aeth> It allows instant feedback of what you're writing. 20150802 05:01:56< aeth> *for some definition of instant 20150802 05:02:04< Aginor> so your problem with c++ is that it's got a compiler? 20150802 05:02:09< aeth> no 20150802 05:02:21-!- scythetwirler [~chatzilla@50.106.46.74] has quit [Remote host closed the connection] 20150802 05:02:25< aeth> You're looking at things through the perspective of the popular ALGOL-descended languages. 20150802 05:02:41< aeth> Common Lisp is a compiled language that uses a REPL. REPL and compiling are not mutually exclusive. 20150802 05:03:22< aeth> It's not interactive/interpreted XOR fast/compiled. 20150802 05:03:48< celticminstrel> C++ is (probably) fast, in terms of runtime. 20150802 05:03:56< aeth> Runtime. 20150802 05:04:06< aeth> It's (probably) slow in terms of compiling. 20150802 05:04:16< aeth> This is why everyone keeps thinking Wesnoth requires a large team to maintain. 20150802 05:04:18< celticminstrel> It can be rather slow in compile time, especially with lots of templates 20150802 05:04:20< aeth> C++ eats time. 20150802 05:04:27< aeth> We are mortal. Time is precious. 20150802 05:04:49< shadowm> ... 20150802 05:04:57< celticminstrel> Wesnoth probably needs a sizable team because it's a huge project. I don't think rewriting it in some other language would do much to change that. 20150802 05:05:02< shadowm> Look, I don't like C++. 20150802 05:05:11< shadowm> But your arguments need a lot of work. 20150802 05:05:23< celticminstrel> I do actually like C++. 20150802 05:05:45< aeth> celticminstrel: Of course Wesnoth needs a large team for the translations, art, WML, etc. 20150802 05:05:52< shadowm> "takes a while to compile" -> "people think Wesnoth needs a large team of maintainers" 20150802 05:06:16< shadowm> Even though for the most part the issue is not the language skills, but rather general (language-independent) programming skills. 20150802 05:06:29< celticminstrel> The size of the team needed is more a result of the size the codebase, not the compile time, I'd think. 20150802 05:06:32< aeth> shadowm: "takes a long time to compile" -> "takes longer to code" -> "for some number of coders N, the output produced by N is reduced because they are spending less time coding" 20150802 05:06:50< shadowm> Dude. You are not even paying attention to me anymore. 20150802 05:07:02< shadowm> You are just nitpicking every single step of the way. 20150802 05:07:07< aeth> ... 20150802 05:07:13< shadowm> 02:06:17 Even though for the most part the issue is not the language skills, but rather general (language-independent) programming skills. 20150802 05:07:15< celticminstrel> Reducing the time spent coding doesn't necessarily mean the output would be increased, though. 20150802 05:07:35< shadowm> For example, no-one in our current team would know how to write (and therefore maintain) an AI. 20150802 05:07:41< shadowm> Or a pathfinding algorithm. 20150802 05:07:46< celticminstrel> Eh? 20150802 05:07:49< Aginor> if compile time is your bottleneck for coding, you're doing something wrong or you're the best person in the entire worl 20150802 05:07:50< aeth> celticminstrel: The size of the codebase is in part because C++ lacks good metaprogramming 20150802 05:07:52< shadowm> Or a UI toolkit (regardless of the language). 20150802 05:08:03< shadowm> But no, let's focus on the language argument alone. 20150802 05:08:05< celticminstrel> "lacks good metaprogramming" Uh, templates. 20150802 05:08:22< shadowm> Let's forget that programming is more than just using a language as a tool to express your program. 20150802 05:08:26< aeth> celticminstrel: Templates are not good metaprogramming. 20150802 05:08:34< celticminstrel> They're Turing-complete! 20150802 05:08:44< celticminstrel> Admittedly with poor syntax. 20150802 05:08:48< aeth> celticminstrel: I recommend you look up the Scheme programming language if you want to see how metaprogramming *can* be done 20150802 05:08:52< celticminstrel> For metaprogramming that is. 20150802 05:09:02< celticminstrel> The syntax is fine for generic programming. 20150802 05:09:21< aeth> celticminstrel: With hygienic macros, Scheme probably has some of the best metaprogramming out there. 20150802 05:09:29< shadowm> I just stated in plain words what kind of people we really need. "Good C++ coders" is just a convenient facade that usually leads to people who can understand these topics. 20150802 05:09:29< aeth> (I don't think Scheme is a good idea for large projects, the language itself is too small.) 20150802 05:09:38< shadowm> And with that said. 20150802 05:09:42-!- shadowm [~ignacio@wesnoth/developer/shadowm] has left #wesnoth [] 20150802 05:09:50< celticminstrel> Uh, he left. Okay then. 20150802 05:10:13< celticminstrel> Oh, maybe he just had to go. 20150802 05:11:07< DeFender1031> also, it's 100% possible for someone to write a fully integrated IDE for C++ as you describe, which would include a VM which would interpret and step through your code on the fly without needing to recompile except when actually building. No one's created such a thing, but there's not a single piece of that for which the technology doesn't exist. Lack of tools that you want for working with it doesn't prove that the language 20150802 05:11:08< DeFender1031> itself is bad. 20150802 05:11:23< Aginor> I suspect he got frustrated by seeing his entire points about the bigger picture being ignored 20150802 05:12:48< aeth> DeFender1031: Actually it does, it means that C++ is hard language to write IDEs for. 20150802 05:12:55< aeth> Since most people code through IDEs, that's a bad thing. 20150802 05:13:26-!- Aginor [~andreas@unaffiliated/aginor] has left #wesnoth [] 20150802 05:13:36< celticminstrel> I think you're using a different definition of IDE than most people. There are lots of IDEs for C++, just not ones with those particular features. 20150802 05:13:40< aeth> As I repeatedly said, I'm not telling the Wesnoth team to rewrite Wesnoth in Language X. 20150802 05:13:55< aeth> I'm just saying (1) C++ is a terrible language and (2) a lot of the problems related to Wesnoth are in fact related to C++ being a terrible language. 20150802 05:14:20< celticminstrel> I'd say you're exaggerating it. 20150802 05:14:26< vultraz> False 20150802 05:14:32< celticminstrel> Though I haven't looked at the code myself, so I can't be certain. 20150802 05:14:34< vultraz> Well, celticminstrel is true 20150802 05:14:48< celticminstrel> :) 20150802 05:15:15< vultraz> Whether you consider C++ a terrible language or not has nothing to do with the number of people able to work on something or how its managed 20150802 05:15:51< aeth> vultraz: I disagree. Rewriting Wesnoth in just about anything would reduce the number of people needed to maintain it, unless it's something like Brainfuck. Even rewriting it in C++ 20150802 05:16:03< vultraz> .... what? 20150802 05:16:54< aeth> If you use certain languages, it's easier for both people and tools to parse it, and faster for people to write it. Fewer people are required. 20150802 05:17:16< Shiki> spending very very much effort for needing less effort to maintain it .... I´m not convinced 20150802 05:17:26< aeth> I didn't say to rewrite Wesnoth! 20150802 05:17:31< celticminstrel> Well, I suppose you could be sort of right about that; something designed from the ground up might be easier to maintain than something that has evolved over time. There's still really no point in doing it. 20150802 05:17:32< aeth> Why does a room full of programmers not understand IF THEN 20150802 05:17:36< aeth> WHAT THE HELL 20150802 05:17:49< aeth> I said if X then Y, not do X. 20150802 05:18:13< aeth> Obviously there's a cost to X itself, and the cost to X might be higher than the cost of not Y. 20150802 05:18:15< vultraz> There's no reason to say if X then Y unless you're suggesting X would be a good course to take 20150802 05:18:23< celticminstrel> ^ 20150802 05:19:23< vultraz> You can't stand here and say 'X would be better!' but then with the next breath say 'No no I'm not saying to do that!' 20150802 05:19:34< DeFender1031> if(x()) { y(); } <-- x is getting run here. 20150802 05:19:36< DeFender1031> :P 20150802 05:19:43< vultraz> ^ 20150802 05:19:54< vultraz> There are areas we would like to migrate to Lua 20150802 05:19:56< celticminstrel> Heh. 20150802 05:20:02< vultraz> That's the extent we plan to do this 20150802 05:20:11< aeth> DeFender1031: symbolic logic P -> Q is what I'm talking about. P doesn't get run :-p 20150802 05:20:25< DeFender1031> aeth, i know. I was being facetious. 20150802 05:20:26< celticminstrel> Nor does Q. 20150802 05:20:39< aeth> celticminstrel: now that's just being silly, of course Q runs 20150802 05:20:40< celticminstrel> Not run, just evaluated. 20150802 05:20:54< aeth> Anyway, I was talking about a hypothetical. 20150802 05:21:13< aeth> Sometimes talking about hypotheticals can lead to practical action, even if you don't actually follow that particular hypothetical. 20150802 05:21:35< vultraz> That is true 20150802 05:21:45< vultraz> It's called brainstorming 20150802 05:21:54< celticminstrel> Oh, I see you are open to C++11. 20150802 05:22:23< celticminstrel> I can do C++11 right now but not C++14. 20150802 05:22:27< aeth> The reasonable course of action is probably to rewrite parts in Lua, not rewrite the whole engine in X. 20150802 05:22:57< vultraz> And again, yes, we want to expose more of the WML API to lua 20150802 05:23:00< DeFender1031> the truth is, i get (at least part of) what aeth is saying. Stuff that evolves often gets cruft added on in hacky ways just to keep the project going, and there usually comes a time when, considered in a vacuum, the idea of having a clean codebase reimplemented from the ground up begins to be appealing. Then again, the cost of rewriting, testing, and maintaining a newly written version is often itself going to lead toe the same 20150802 05:23:01< DeFender1031> problem by the time you're done. See also: https://xkcd.com/844/ 20150802 05:23:30< vultraz> I think DeFender1031 summed it up pretty well 20150802 05:23:45< aeth> I thought someone was going to link to http://www.joelonsoftware.com/articles/fog0000000069.html 20150802 05:25:27< aeth> It's one approach, but I do disagree with it. 20150802 05:25:35< aeth> The never-rewrite approach. 20150802 05:26:29< vultraz> We've never pretended our codebase is clean 20150802 05:26:35< vultraz> In fact, it's messy as hell 20150802 05:26:40< DeFender1031> aeth, actually I vehemently disagree with joel spolsky's take on this topic. things have to be weighed carefully. I do believe that there really does sometimes come a time where the entire architecture of something ought to be redone, or else long-term development will become a nightmare. But you have to be smart about it and use techniques which won't freeze all progress until the complete rewrite is done. You try to rewrite 20150802 05:26:42< DeFender1031> the core of whatever you're doing and then switch over a few components at a time, while at the same time developing new components on the new version. 20150802 05:27:22< aeth> DeFender1031: I agree. I often step by step rewrite my (small) programs. The keyword is step by step. 20150802 05:27:28< aeth> A blank rewrite is probably going nowhere. 20150802 05:27:29< DeFender1031> (My project at my real job happens to be in the middle of just such a codebase-switch) 20150802 05:28:52< DeFender1031> i happen to think that every 6 or 7 development cycles, things become such a mess that you have to spend one cycle just cleaning it all up. 20150802 05:29:16< DeFender1031> so no, i would not have linked to joel spolsky's "never rewrite" take. 20150802 05:29:25< DeFender1031> besides, xkcd is far funnier. 20150802 05:29:42< aeth> idk I've never found XKCD funny 20150802 05:29:52< aeth> It's sometimes very clever, but it's never made me laugh 20150802 05:30:02< aeth> The nerd humor that makes me laugh is Markov Chains 20150802 05:30:18< aeth> You should look at some of https://www.reddit.com/r/SubredditSimulator/ 20150802 05:30:54< DeFender1031> eh, to each his own. The point is that with any rewrite, you have to do a cost-benefit analysis. 20150802 05:35:13-!- oldlaptop [~quassel@50-107-125-36.adr02.mskg.mi.frontiernet.net] has quit [Ping timeout: 246 seconds] 20150802 05:35:55-!- oldlaptop [~quassel@50-107-125-36.adr02.mskg.mi.frontiernet.net] has joined #wesnoth 20150802 05:39:17< janebot> Tweet (by @Wesnoth) (RT @frogatto) When you RT results in a bunch of followers for someone else :3 http://t.co/PLTDJE7H7C [ https://twitter.com/Wesnoth/status/627715270975434752 ] 20150802 05:50:50-!- celticminstrel [~celmin@unaffiliated/celticminstrel] has quit [Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] 20150802 06:00:27-!- [Relic] [~Relic]@2602:306:33a3:6d30:9970:256f:d7f5:c19f] has quit [Quit: I press the magic X and all the weirdos go away!] 20150802 06:16:04-!- Shiki [59cc9b69@gateway/web/freenode/ip.89.204.155.105] has quit [Quit: Page closed] 20150802 06:16:09-!- Kwandulin [~Miranda@p5B0087E4.dip0.t-ipconnect.de] has joined #wesnoth 20150802 06:24:31-!- ancestral [~ancestral@75-161-229-81.mpls.qwest.net] has joined #wesnoth 20150802 06:39:49-!- agorecki [~agorecki@unaffiliated/agorecki] has quit [Remote host closed the connection] 20150802 07:11:52-!- ancestral [~ancestral@75-161-229-81.mpls.qwest.net] has quit [Quit: i go nstuf kthxbai] 20150802 07:20:23< aeth> 97.3% chance to kill; miss 20150802 07:28:05< vultraz> 97 ain't 100 :P 20150802 07:28:35< aeth> to be fair I've probably attempted such situations way more than 100 times 20150802 07:28:44< aeth> since I need to do an attack or kill to promote even if I play with the XP 20150802 07:37:43< aeth> I've actually been having terrible luck as red in this RPG though, including these tests now I guess 20150802 07:38:12< aeth> which I guess is good because it's the enemy for the other players 20150802 07:39:49-!- Aginor [~andreas@unaffiliated/aginor] has joined #wesnoth 20150802 07:54:51-!- Appleman1234_ [~Appleman1@KD059138017109.au-net.ne.jp] has joined #wesnoth 20150802 07:58:01-!- Appleman1234 [~Appleman1@KD059138030099.au-net.ne.jp] has quit [Ping timeout: 246 seconds] 20150802 08:03:03-!- Xara [Yangyf@2001:cc0:2020:4010:6483:311a:ab7b:ada2] has quit [Ping timeout: 244 seconds] 20150802 08:27:57-!- Earlo [~Earlo@line-10441.dyn.kponet.fi] has joined #wesnoth 20150802 09:07:37-!- Haudegen [~quassel@85.124.51.57] has quit [Ping timeout: 244 seconds] 20150802 09:11:21-!- zookeeper [~lmsnie@wesnoth/developer/zookeeper] has joined #wesnoth 20150802 09:13:48-!- Haudegen [~quassel@85.124.51.57] has joined #wesnoth 20150802 09:26:59-!- Haudegen [~quassel@85.124.51.57] has quit [Ping timeout: 252 seconds] 20150802 09:32:41-!- Haudegen [~quassel@85.124.51.57] has joined #wesnoth 20150802 09:39:31-!- prkc_ [~prkc@catv-89-134-159-162.catv.broadband.hu] has joined #wesnoth 20150802 09:39:48-!- prkc_ [~prkc@catv-89-134-159-162.catv.broadband.hu] has quit [Client Quit] 20150802 09:39:54-!- lipkab [~the_new_l@host-91-147-210-193.biatv.hu] has joined #wesnoth 20150802 09:44:23-!- wario [~wario_@unaffiliated/wario] has joined #wesnoth 20150802 09:59:00-!- Kwandulin [~Miranda@p5B0087E4.dip0.t-ipconnect.de] has quit [Read error: Connection reset by peer] 20150802 10:00:57-!- Xara [~Yangyf@117.136.38.86] has joined #wesnoth 20150802 10:07:04-!- shadowm_desktop [ignacio@wesnoth/developer/shadowm] has quit [Ping timeout: 246 seconds] 20150802 10:48:27-!- Kwandulin [~Miranda@p5B0087E4.dip0.t-ipconnect.de] has joined #wesnoth 20150802 10:51:20-!- Haudegen [~quassel@85.124.51.57] has quit [Ping timeout: 272 seconds] 20150802 10:51:25-!- lipkab [~the_new_l@host-91-147-210-193.biatv.hu] has quit [Ping timeout: 240 seconds] 20150802 10:55:31-!- lipkab [~the_new_l@host-91-147-210-193.biatv.hu] has joined #wesnoth 20150802 10:56:51-!- Haudegen [~quassel@85.124.51.57] has joined #wesnoth 20150802 11:00:02-!- claymore2 [~hexchat@host109-154-220-118.range109-154.btcentralplus.com] has joined #wesnoth 20150802 11:10:10-!- lipkab [~the_new_l@host-91-147-210-193.biatv.hu] has quit [Ping timeout: 240 seconds] 20150802 11:11:25-!- Xara [~Yangyf@117.136.38.86] has quit [Ping timeout: 265 seconds] 20150802 11:43:45-!- Appleman1234_ is now known as Appleman1234 20150802 11:59:29-!- Earlo [~Earlo@line-10441.dyn.kponet.fi] has quit [Remote host closed the connection] 20150802 12:17:00-!- lipkab [~the_new_l@host-91-147-210-193.biatv.hu] has joined #wesnoth 20150802 12:18:53-!- JackBauer24 [~JackBauer@89-76-206-248.dynamic.chello.pl] has quit [Quit: Konversation terminated!] 20150802 12:20:13-!- celticminstrel [~celmin@unaffiliated/celticminstrel] has joined #wesnoth 20150802 12:39:28-!- JackBauer24 [~JackBauer@89-76-206-248.dynamic.chello.pl] has joined #wesnoth 20150802 12:56:17-!- JackBauer24 [~JackBauer@89-76-206-248.dynamic.chello.pl] has quit [Quit: Konversation terminated!] 20150802 13:15:06-!- ancestral [~ancestral@75-161-229-81.mpls.qwest.net] has joined #wesnoth 20150802 13:18:58-!- DreadKnight [~DreadKnig@unaffiliated/dreadknight] has joined #wesnoth 20150802 13:51:02-!- lucky__ [~lucky@host208-194-dynamic.16-79-r.retail.telecomitalia.it] has joined #wesnoth 20150802 13:52:55-!- salluc69 [~lucky@host231-192-dynamic.15-87-r.retail.telecomitalia.it] has quit [Ping timeout: 246 seconds] 20150802 14:00:46-!- shadowm_desktop [ignacio@wesnoth/developer/shadowm] has joined #wesnoth 20150802 14:29:26-!- Rastus_Vernon [~rvernon@wikimedia/Rastus-Vernon] has quit [Quit: bye] 20150802 14:45:05-!- [Relic] [~Relic]@2602:306:33a3:6d30:657a:e054:8393:a9de] has joined #wesnoth 20150802 15:13:56-!- ancestral [~ancestral@75-161-229-81.mpls.qwest.net] has quit [Quit: i go nstuf kthxbai] 20150802 15:20:22-!- Kwandulin [~Miranda@p5B0087E4.dip0.t-ipconnect.de] has quit [Read error: Connection reset by peer] 20150802 15:51:55-!- lipkab [~the_new_l@host-91-147-210-193.biatv.hu] has quit [Ping timeout: 256 seconds] 20150802 15:55:14-!- jemadux [~jemadux@unaffiliated/jemadux] has quit [Remote host closed the connection] 20150802 16:00:34-!- Kwandulin [~Miranda@p5B0087E4.dip0.t-ipconnect.de] has joined #wesnoth 20150802 16:08:51-!- JackBauer24 [~JackBauer@89-76-206-248.dynamic.chello.pl] has joined #wesnoth 20150802 16:51:18-!- wario [~wario_@unaffiliated/wario] has quit [Ping timeout: 250 seconds] 20150802 16:56:39-!- wario [~wario_@unaffiliated/wario] has joined #wesnoth 20150802 16:59:26-!- vultraz [~chatzilla@wesnoth/developer/vultraz] has quit [Remote host closed the connection] 20150802 16:59:55-!- jemadux [~jemadux@unaffiliated/jemadux] has joined #wesnoth 20150802 17:09:28-!- Appleman1234_ [~Appleman1@KD059138023218.au-net.ne.jp] has joined #wesnoth 20150802 17:12:57-!- Appleman1234 [~Appleman1@KD059138017109.au-net.ne.jp] has quit [Ping timeout: 256 seconds] 20150802 17:33:22-!- lipkab [~the_new_l@host-91-147-210-193.biatv.hu] has joined #wesnoth 20150802 17:39:46-!- mattsc [~mattsc@wesnoth/developer/mattsc] has joined #wesnoth 20150802 17:44:23-!- Kwandulin [~Miranda@p5B0087E4.dip0.t-ipconnect.de] has quit [Read error: Connection reset by peer] 20150802 17:55:52-!- shadowm_desktop [ignacio@wesnoth/developer/shadowm] has quit [Ping timeout: 250 seconds] 20150802 18:17:05-!- wario_ [~wario_@unaffiliated/wario] has joined #wesnoth 20150802 18:17:17-!- wario [~wario_@unaffiliated/wario] has quit [Disconnected by services] 20150802 18:17:19-!- wario_ is now known as wario 20150802 18:32:04-!- extropic-engine [sid73001@gateway/web/irccloud.com/x-rtpthmfynwhpbmjj] has left #wesnoth [] 20150802 18:48:45-!- lipkab [~the_new_l@host-91-147-210-193.biatv.hu] has quit [Quit: Leaving] 20150802 18:56:19-!- Netsplit *.net <-> *.split quits: Sonderblade, Gambit 20150802 18:56:28-!- Netsplit over, joins: Gambit 20150802 18:57:05-!- Netsplit over, joins: Sonderblade 20150802 19:10:54-!- Netsplit *.net <-> *.split quits: TheJJ, Pepe_, loonycyborg 20150802 19:11:07-!- Netsplit over, joins: Pepe_ 20150802 19:11:27-!- Netsplit over, joins: loonycyborg 20150802 19:12:03-!- Netsplit over, joins: TheJJ 20150802 19:21:10-!- mattsc [~mattsc@wesnoth/developer/mattsc] has quit [Quit: So long and thanks for all the fish.] 20150802 19:22:38-!- trewe [~trewe@2001:8a0:d104:1a01:626c:66ff:fe92:9b7c] has joined #wesnoth 20150802 20:18:38-!- deego [~user@unaffiliated/deego] has quit [Read error: Connection reset by peer] 20150802 20:19:20-!- deego [~user@unaffiliated/deego] has joined #wesnoth 20150802 20:32:12-!- deego [~user@unaffiliated/deego] has quit [Ping timeout: 255 seconds] 20150802 20:35:41-!- deego [~user@unaffiliated/deego] has joined #wesnoth 20150802 20:37:00-!- Haudegen [~quassel@85.124.51.57] has quit [Ping timeout: 264 seconds] 20150802 20:37:54-!- deego [~user@unaffiliated/deego] has quit [Read error: Connection reset by peer] 20150802 20:38:35-!- deego [~user@unaffiliated/deego] has joined #wesnoth 20150802 20:40:57-!- ancestral [~ancestral@209.181.254.220] has joined #wesnoth 20150802 20:44:15-!- Haudegen [~quassel@85.124.51.57] has joined #wesnoth 20150802 20:45:18-!- ancestral [~ancestral@209.181.254.220] has quit [Ping timeout: 250 seconds] 20150802 20:46:04-!- ancestral [~ancestral@254.sub-70-197-224.myvzw.com] has joined #wesnoth 20150802 20:47:46< aeth> hi ancestral 20150802 20:48:17< aeth> I just need to code in three more upgrades and fix a very major issue where upgrades are only kept on AMLAs, not promotions. 20150802 20:48:40-!- deego [~user@unaffiliated/deego] has quit [Read error: Connection reset by peer] 20150802 20:49:16-!- deego [~user@unaffiliated/deego] has joined #wesnoth 20150802 20:49:19< aeth> I'm guessing on promotion I have to track the diff between the unit's max_whatever and what the unit's max_whatever is supposed to be because it will take the stats of the new unit 20150802 20:50:37< aeth> but it should have the max_moves or max_hitpoints difference added/subtracted and the max_experience percentage difference applied 20150802 20:50:37-!- ancestral [~ancestral@254.sub-70-197-224.myvzw.com] has quit [Read error: Connection reset by peer] 20150802 20:50:46< Ravana_> you don't use [object] for upgrades? 20150802 20:53:46-!- deego [~user@unaffiliated/deego] has quit [Ping timeout: 260 seconds] 20150802 20:55:13-!- DreadKnight [~DreadKnig@unaffiliated/dreadknight] has quit [Quit: #AncientBeast - Master Your Beasts ( www.AncientBeast.com )] 20150802 20:58:13-!- localuser- [~none@unaffiliated/localuser-] has joined #wesnoth 20150802 21:01:01-!- ancestral [~ancestral@63.92.240.233] has joined #wesnoth 20150802 21:01:28-!- ancestral [~ancestral@63.92.240.233] has quit [Client Quit] 20150802 21:02:30-!- deego [~user@unaffiliated/deego] has joined #wesnoth 20150802 21:06:08-!- deego [~user@unaffiliated/deego] has quit [Write error: Connection reset by peer] 20150802 21:06:50-!- deego [~user@unaffiliated/deego] has joined #wesnoth 20150802 21:09:34-!- prkc [~prkc@catv-89-134-159-162.catv.broadband.hu] has quit [Ping timeout: 250 seconds] 20150802 21:15:24-!- claymore2 [~hexchat@host109-154-220-118.range109-154.btcentralplus.com] has quit [Quit: Leaving] 20150802 21:27:55< aeth> Ravana_: almost everything is written in Lua 20150802 21:28:30< Ravana_> I believe there was Lua version of [object] too 20150802 21:28:38-!- dobson [~dobson@105.ip-167-114-152.net] has quit [Ping timeout: 265 seconds] 20150802 21:30:02< Ravana_> http://wiki.wesnoth.org/LuaWML:Units#wesnoth.add_modification 20150802 21:30:08< aeth> yes 20150802 21:30:10< aeth> I found that 20150802 21:31:03< aeth> what I'm currently doing is just plugging right into wesnoth.get_unit(x, y) 20150802 21:31:13-!- prkc [~prkc@catv-89-134-159-162.catv.broadband.hu] has joined #wesnoth 20150802 21:31:17< aeth> the advantage is that I can write real Lua without having to worry about the WML-in-Lua nonsense 20150802 21:31:49< aeth> It probably has less of an overhead too because most of the modified units aren't going to be promoting. Although units upgraded through the upgrades menu might 20150802 21:32:01< Ravana_> yes, just object is most permanent way, a pain to remove such changes 20150802 21:33:11< aeth> right, but WML-Lua-WML-Lua-WML-Lua-whatver will get very messy very quickly if I start defining tags with the Lua I've written 20150802 21:33:23< aeth> so if I can avoid something in WML I tend to 20150802 21:33:56-!- dobson [~dobson@2607:5300:100:200::160d] has joined #wesnoth 20150802 21:34:34< aeth> Writing in Lua leads to a strange effect where things that are hard in most add-ons are trivial and things that are trivial in most add-ons are hard. 20150802 21:34:40< aeth> Wesnoth has a very, very, very messy API. 20150802 21:34:57< aeth> It's not like what would happen if e.g. it had been using Lua from the start and 100% of the WML had to go through Lua first 20150802 21:36:53< aeth> And if you mix and match literal WML in the Lua you wind up with things like sometimes having to do a T["lua"] { code = "lua_function_call_as_a_string()" } 20150802 21:37:20< aeth> which is probably the least elegant thing I have ever seen in any API ever 20150802 21:37:30< aeth> It gets really messy when that function in a string has arguments. 20150802 21:37:41-!- deego [~user@unaffiliated/deego] has left #wesnoth ["ty"] 20150802 21:42:28< aeth> That being said, coding for the web is still probably worse because at least with Wesnoth there's only one WML engine to test on for all the undefined behavior. 20150802 21:43:18-!- Sonderblade [~Sonderbla@h-52-183.a157.priv.bahnhof.se] has quit [Ping timeout: 255 seconds] 20150802 21:45:31< Ravana_> I haven't used that complicated Lua so no idea about that 20150802 21:48:36< aeth> if you write complicated Lua you basically have to write wrappers around as much of the WML as possible. 20150802 21:49:07< aeth> This of course means there's going to be some speed penalty. 20150802 21:57:11< Ravana_> I only use Lua when I believe I need something that wml is just incapable of 20150802 21:57:14-!- Sonderblade [~Sonderbla@h-52-183.a157.priv.bahnhof.se] has joined #wesnoth 20150802 21:57:53< aeth> Unfortunately, WML is incapable of functions 20150802 21:58:13< Ravana_> those I don't miss actually 20150802 21:59:55< aeth> With a real programming language I can build abstractions: https://github.com/Aethaeryn/wesnoth-umc/blob/master/Master_of_Dungeons/data/units.lua 20150802 22:00:27< aeth> iirc when I had a similar thing in WML macros, I had to take into account the cost, the actual location of the unit image, and more. Lua handles all of that. (Idk, maybe WML can now, too.) 20150802 22:01:05< aeth> I only have to keep track of the name that the unit uses internally (sometimes it's slightly different from the game name) and the portraits I want to use in the menus 20150802 22:01:19< Ravana_> out of all my addons I have, I create new Lua function only once https://github.com/ProditorMagnus/OrociaRandomMod/blob/master/scenarios/OrociaRandomMod.cfg#L322 20150802 22:01:58< aeth> yeah, most people seem to not use Lua in their stuff 20150802 22:02:10< aeth> Probably because the way to interact between Lua, WML, and the game can often be a mess 20150802 22:02:12-!- Appleman1234_ [~Appleman1@KD059138023218.au-net.ne.jp] has quit [Ping timeout: 255 seconds] 20150802 22:02:58-!- jemadux [~jemadux@unaffiliated/jemadux] has quit [Read error: Connection reset by peer] 20150802 22:05:45< aeth> To code properly in Lua for Wesnoth, you need to know both Lua and WML, and you need to know both the regular WML syntax as well as several WML-in-Lua syntaxes. 20150802 22:06:17< aeth> (The T.foo used in all of the documentation doesn't work universally, I think it fails on T.not and/or T.or and/or T.and, so you need to know that you can also do T["not"] etc. 20150802 22:06:20< aeth> ) 20150802 22:09:38< Ravana_> that I know from javascript 20150802 22:13:12< aeth> and... it turns out that it's easier for me to apply the upgrade again after a unit does a non-AMLA advance in the Lua than to use [object] 20150802 22:13:28< aeth> because it's so hard to interface with WML stuff that's not written in Lua 20150802 22:13:44< aeth> (although to be fair, I did already implement a check for AMLA) 20150802 22:18:26< aeth> Working with units isn't fun, either. About half the stuff's done in unit and half's done in unit.__cfg, it seems. 20150802 22:19:08< aeth> I think it's an optimization, stuff that's supposed to be held in common is just held in __cfg, so you kind of have to overwrite the unit you want to modify if you want to e.g. modify max_hitpoints 20150802 22:26:02-!- shadowm_desktop [ignacio@wesnoth/developer/shadowm] has joined #wesnoth 20150802 22:26:03-!- Appleman1234 [~Appleman1@KD059138023218.au-net.ne.jp] has joined #wesnoth 20150802 22:28:47< aeth> okay, finally have some of the upgrades working, the rest probably do need [object] 20150802 22:34:01-!- trewe [~trewe@2001:8a0:d104:1a01:626c:66ff:fe92:9b7c] has quit [Quit: quit] 20150802 22:37:05-!- Appleman1234 [~Appleman1@KD059138023218.au-net.ne.jp] has quit [Ping timeout: 240 seconds] 20150802 22:41:44< aeth> one more change until the next MP playtest 20150802 22:42:02< aeth> if anyone's interested soon. (an hour from now at most maybe?) 20150802 22:57:49-!- Appleman1234 [~Appleman1@KD059138023218.au-net.ne.jp] has joined #wesnoth 20150802 23:21:58-!- vultraz [~chatzilla@wesnoth/developer/vultraz] has joined #wesnoth 20150802 23:45:03-!- wario [~wario_@unaffiliated/wario] has quit [Quit: Leaving] 20150802 23:53:05< aeth> starting a test game on 1.12 if anyone's interested --- Log closed Mon Aug 03 00:00:02 2015