Development Thread: Sacred Seed
-
@cobaltasaurus said in Development Thread: Sacred Seed:
Not for me. I don't really learn anything by taking other people's code. I've looked at the Arx code countless of times, but for the most part I go "...........????"
It sounds like you're talking about something different than what @Roz is saying. It's not about looking at code. I can stare at an engine all day long and never get anywhere. It's only once you start taking the thing apart and putting it back together that you really start to understand it.
It's the process of going from "......????" to "okay what does that function do" to "well, let's see what happens when I tweak this little thing" to "oh, so that's what that does" to "huh, now why did they do that" ... and so on.
This is a well-demonstrated and even researched as a very effective way to learn software. Often even moreso than ground-up tutorials. YMMV of course - everyone learns differently - but you might get more out of it with a slightly different approach.
-
@cobaltasaurus If you don't know the programming language in which it is written, just looking through a foreign code base will indeed be confusing. But as @faraday points out, it's the taking- apart bit that's helpful.
If you worry about getting too much ready but unknown code without learning, I would not use the Arx code straight up. Rather consider this work flow:
- Pull the Arx code down (without installing or starting a game with it) in a separate folder to use as reference. Start a "vanilla" Evennia instance in another, currently without any changes from the default.
- Pick one simple aspect of Arx that you want to have in your game - maybe a single command or small functionality.
- Go dig into Arx for where that is accomplished. If the amount of code feels overwhelming, pick another feature that is more contained. Copy & paste that code into your game (into existing modules or new ones as needed - knowing how modules work is an important aspect of Python).
- Make it run in your vanilla Evennia instance. Don't give up. Just learning how to extract only the bits of Arx you need and adapt it to the 'vanilla' structure you had will teach you a lot. Don't be shy to ask questions.
- Now go into figuring out why that feature works and how. Since it's relatively isolated you will not be as distracted by other things, but it still interacts with the rest of Evennia. So digging into the extensive Evennia docs or into the brains of the community will get you places and hopefully give good insight.
- Now customize the feature a little to your own needs, make sure it works the way you want and expects. If you get overwhelmed, maybe it's better to start with a smaller code feature to explore.
- Rince and repeat, gradually making your game less vanilla.
Python is a very good beginner's language, but it's also very powerful and there are still many concepts to grasp; Like with any language, understanding takes time. If you haven't, peek at our Pyhon intro, which helps you into debugging and testing Python code using Evennia.
.
Griatch -
I just want to echo Griatch and Faraday here - taking stuff apart and playing with it is probably the best way to learn. I'm more than happy to talk about how to adapt any particular feature from Arx, too.
-
I give up.
-
@cobaltasaurus said in Development Thread: Sacred Seed:
I give up.
-
@cobaltasaurus We (well, at least I - and I'm fairly confident the others as well) were just trying to encourage you. Do whatever works!
-
Having three very advanced coders come and tell me, effectively, "just try harder" isn't really an encouragement for me. I appreciate the faith in my abilities and the attempts at encouragement-- but I don't learn that way, and I never have.
I learn via a combination of interactive instruction and hands on doing. (e.g. listening to someone give instructions, and answer questions as I have them. Or chatting actively while I'm working on code.) . I learned Java in a classroom setting by listening to my instructor discuss various bits of code, while working on the code on my own computer. I learned MUX tinycode by interactively building a +who with @ronan. And then latter by digging through help files on function classes to build +Events.
I'm very grateful @Tehom put the Arx code out there, and I was very grateful when he sent it to me before hand, so I could look at things. But I've looked at it and it is so far above what little I know of python it's like looking at Kanji when I'm barely able to read Romanji. It especially doesn't work for me since it's not like softcode, where I can change a tiny line in the code and immediately run it. I have put it onto the server, then reload the game, and then hope I haven't broken anything.
I don't mean to sound petulant, but I've already been struggling and feeling like I'll never actually be a programmer. Thank you for the encouragement-- but please stop.
I can't do what you can do.
-
@cobaltasaurus said in Development Thread: Sacred Seed:
Having three very advanced coders come and tell me, effectively, "just try harder" isn't really an encouragement for me. I appreciate the faith in my abilities and the attempts at encouragement-- but I don't learn that way, and I never have.
"Try harder" is not what anyone meant to say, I can practically guarantee that. But fair enough - people learn in different ways!
Just know that you are not alone.
To take the Evennia community, it's not unusual at all for us to get people dropping in with very little or no Python experience (it happens about once a week I think). If you know mushcode and even some Java you are in fact way ahead of the pack! Java is more similar to Python than mushcode is, I would say.
I learn via a combination of interactive instruction and hands on doing. (e.g. listening to someone give instructions, and answer questions as I have them. Or chatting actively while I'm working on code.) . I learned Java in a classroom setting by listening to my instructor discuss various bits of code, while working on the code on my own computer. I learned MUX tinycode by interactively building a +who with @ronan. And then latter by digging through help files on function classes to build +Events.
Breaking down code as people suggested above is a very efficient way but I know I recommended it because it sounded like you wanted to learn Python and worried that using Arx code would bypass that. If breaking down existing code is not your thing, others have gone about it in various ways, for example like doing basic Python/Evennia tutorials or simply by hanging around in the Evennia IRC chat and asking questions, both big and small. Doing that is pretty close to 'interactive instruction' in fact, except it often involves more than one tutor.
I'm very grateful @Tehom put the Arx code out there, and I was very grateful when he sent it to me before hand, so I could look at things. But I've looked at it and it is so far above what little I know of python it's like looking at Kanji when I'm barely able to read Romanji.
Arx is the result of many years of work on Tehom's part. There is a reason it's useful as a base to start from. But I too would need to really sit down to see if I could understand its details - and even then might have to ask him about why things work the way they do. Reading someone else's code is never easy and quadruple so if you are not yet familiar with the language!
It especially doesn't work for me since it's not like softcode, where I can change a tiny line in the code and immediately run it. I have put it onto the server, then reload the game, and then hope I haven't broken anything.
For Evennia you need to get used to working in two windows - one for your code and one for your game. Once you are used to this, you will see small changes pretty much immediately in that system as well. Also remember that you don't need to have any remote server or anything to run Evennia - you can run just just fine in the comfort of your own laptop (with no internet, even) as you experiment and learn.
I can't do what you can do.
I don't beleive that is true about you or anyone.
.
Griatch -
@cobaltasaurus
I can sympathize with you. I have tried several times to learn python and engage with Evennia. I have a game all written up, I even used to pay a coder. I have yet to break the barrier between the tools available to me and actually knowing how to use them and benefit. It's a difficult gap to bridge but maybe one of the experienced Evennia coders might be willing to make some time with you to walk you through taking a system apart and putting it back together. It's a more interactive and discussion based method and once they have walked you through the process a few times you'll be able to refer back to that experience going forward.
Honestly it's probably what I should do, but you know... No one takes their own advice >_>
-
I admit, even having taken several online Python courses, when I looked at the Arx code, I just sort of folded up and said, "NOPE." I still want to try it at some point, but that sort of overwhelmed reaction isn't, I think, at all unusual.
-
Maybe we convince Tehom to add to his patreon page a contribution tier where he teaches an Arx / Evennia coding class once a month!
-
I'd rather give the money to the Evennia team to get someone on board to make the system more accessible to learn, even if that person is Tehom. I'm ready to tear Evennia apart but I'm still very nervous at all the layers I don't understand to start getting into the layers that I do.
--
edit: I'm not slamming anyone; consider this clumsy constructive criticism. Learning Evennia is not a matter of learning Python. Eventually it is, but you've got to get to it first. And learn how it works.
If you want to find something that is much, much, MUUUUCH easier to pick up and learn, try Ares (even though it's Ruby) or MUCK (even though it's Fortran).
-
It's a little known in communities that I play that I'm both a "professional" (as in, gets paid) software engineer, as well as a full time software engineering student at a university, and I still have these moments of just utter frustration and complete self-doubt. It's fine to have those feelings. It's normal.
There's a theory calling the Dunning-Kruger effect whereby, essentially, people who have less experience in a particular field overestimate their own ability until a point in which suddenly their greater experience indicates to them that they are completely swamped by the additional discovery of so much more that they have to learn. While I don't believe it's the case for everyone, it can be disheartening, whether you think you've got this in the bag or not. It's a whole process of trial and error, doubt and elation, misery and excitement. Some of these phases are longer than others and that changes on every project you undertake.
I'll also echo the sentiment others have made here: reading someone else's code is extremely hard to do. It's their own attempt at solving a problem where there are many ways to do it. You're not just learning to read syntax, you're attempting to think like them. In the early days of Arx, I offered my time to @Tehom for a bit, and though I couldn't provide much time to help in the short time I did I noticed we have very different approaches to similar problems. Not only this, we're all still learning as we go, and I venture Tehom's looked back at some of his own stuff and gone 'oh my god what did I do' but can't immediately change some of this. So, don't take everything verbatim as the best way to do things. Feel free to be different, but when you need inspiration look to what works for you. It may be a completely different project, or a similar one.
tl;dr: programming is hard. it's going to suck. do what you want to do and how you want to do it. feel free to ask for help when you're stuck. it may or may not be helpful to you. that's more than fine. don't give up because you don't think you can do it. persist. it'll feel so fucking great when you've achieved something. even a small thing. just do a little piece at a time. each win will power you through the next slog. then you'll win again. dream big. start small.
-
and for what it is worth you absolutely can get near instant feed back on your code in Evennia/Arxcode.
Just edit the code on your server, save the file without even exiting the editor, and on your client logged in to the server do an @reload before testing.
-
To avoid cluttering this thread with overall Evennia discussion, I made another one here: http://musoapbox.net/topic/2490/make-evennia-more-accessibility-ideas
.
Griatch -
I really apologize for coming across as just telling you to try harder - that wasn't what I intended at all. What I meant is that if the code is too intimidating, I'm happy to help you take out whatever features you like and change/adapt it for your game. That sort of taking things out and repurposing them is how I learned, though it's fair to say that the approach doesn't work for everyone. I'm happy to go over code that's confusing (and most of my code isn't clearly written and definitely poorly documented, unlike Evennia) and explain things, or suggest ways to implement features you like.
If using Arx wholesale and changing things is easier for you, I'd be happy to help with that too. I've talked to other people on Discord a lot with some of the setup problems and stuff, I really don't mind.
-
I, too, am sorry for coming across as "try harder", which was certainly not the intent. As @Wyrdathru said - programming is hard, and everyone learns differently. Dissecting code is a common way to go, but it is by no means the only one.
I can't really help with Evennia, but for anyone interested in learning Ares code there's a whole suite of tutorials and I'm happy to answer questions and help out those who want to learn.
-
Yeah, I'm sorry! I was actually looking at it in terms of learning by doing, too. Not just reading code or something, I wouldn't really learn that way either.
-
What I told Cobalt on Discord. I want to say up front that I know that all you coder types are good people. I like you all, even when I'm yelling at some of you for not getting it. I'm using this thread to get back into coding, and sometimes you need a wall to jump off which means finding a good wall.
Hello, good walls!
When we get good at something, we often lose sight at what we were like at first, ten, twenty years ago. A lot of us learned to code because we were self-motivated to make awesome things.
We should all be motivated to help each other make awesome things, which is why I know you're all good people. That it might've come across as "stare until your forehead bleeds" instead of "you got this" is because we're humans.
We all got this.
Anyhow, here's what I said, in my usual Thenomain way:
--
Dear @Cobaltasaurus :
Learning is hard.
Learning on your own is harder.
Learning on your own when all you want to do is "make X" is hard and frustrating.
Learning on your own when experts tell you about its ease is frustrating as hell.
Fuck 'em.
How many times I've been told not to code "WHO" because it's already been coded has kept me from even trying Evennia or Ares.
FUCK 'EM.
When I get the brain to get Evennia running again on my computer, I'm going to find WHO and I'm going to take it apart until I can make it my bitch.
--
(I typed out but did not include: And then I'm going to shove it down the throat of anyone who told me not to code WHO because it was already done. Good lord people, some of you are here in this thread saying learning how to create the wheel by taking a wheel apart is a good thing! Code WHO. Code the everloving shit out of WHO. Make awesome things out of already awesome things.)
-
+who hackathon starts midnight, only drunk contestants will be allowed, and all vulgarities expressed are not the opinions of the developers themselves but the opinions of 30+ years of frustration.
</lies>