Thursday 27 June 2019

Genetics Development - Day 6 - Adding to the Genetics and Breaking IT ALL!

So, after ending Day 5 with the basics of inheritance of both sex, and wing type figured out, the models displaying correctly and everything working exactly as I would like, it is now time to try and expand it to include a 'sex-linked' inheritance pattern, white eyes.

Of course, doing this breaks EVERYTHING!!! OK, well not everything, but the basic premise of the whole system I have in place is now untenable. I believe this is because I have the sex type calling a particular geometry by using 'minecraft:variant', and wing type calling a particular texture by using 'minecraft:mark_variant', which leaves me no way to call another texture 'automatically' through this entity.

I can get the white eyes to appear on the fly through external editing, and the inheritance appears to work find on the genotypes of the offspring, but I cannot get it to display the correct phenotype, because it gets 'normal wings' texture before it gets the 'white eyes' texture. Basically it get's a 'mark_variant' for normal wings, because that is what it has, and that doesn't then get overwritten by the white eyes 'mark_variant'.

Now I have figured out the issue, what is the resolution? After quite a few hours fiddling around and trying to understand, I think I need to, somehow, give particular variants, and mark_variants based on the multiple separate genes I have. Each gene marks a 'birth_event' which I then use to add component groups to the flies, which in the past was assigning the variants and mark_variant data.

The first step I have taken is to make all 'geometry' alterations, so that is sex, and vestigial wing type (and later curly wings too) based on variant, and all textures based on mark_variant. This means quite a bit of explicitness in the entity definition and a whole heap of individual textures for each possible phenotype, which I was trying to avoid in some respects, but looks like the entity definition file in the behaviour pack is going to be as large as it needs to be!

Next steps? I have quite a a few options to explore for day 7 and beyond, and they are as follows;

  • Use scripts and custom variables to control and assign the appropriate data to the flies.
  • Use family tags at birth, to then assign the specific variant and mark variants.
  • Use 'materials' as the third 'data change' in the render controller.
  • Use a 'villager' style system to assign different geometries and textures as they assign different professions in the vanilla game.
  • Use 'masked' textures (again as they do in villagers) to 'overlay' multiple parts of the flies.
I think the most likely option for me to initially explore is the 'materials' method, and making the eyes a 'material' that I can alter based on genetics. Second to that will likely be a combination of the masked textures and the villager professions.

There are of course pros and cons in each, and in reality what I want to do may be more readily accessible in the API, so when I have some brain power, I am going to head down the path of exploring that, but I am also really enjoying exploring and I am learning a lot about how entities work in Minecraft, which I am thinking will be beneficial in a lot of future projects too.

But, that is where I finish day 6, a little further along, but also taking a significant step backwards. One thing that has crossed my mind, is to completely separate the different inheritance patterns, and realistically that would work quite well, as in have a "drosophila v" for vestigial, and "drosophila we" for white eyes, which would definitely work, but I am interested in seeing whether I can combine multiple inheritance patterns and weave them into some semblance of correct genetics for this organism.

Monday 24 June 2019

Genetics Development - Day 5 - Testing the Genetics

Testing! Testing! Testing was the goal here. The main aim was to check whether the inheritance pattern of both sex and wing type were correct. I tested 160 offspring from the same parents (after confirming the parents genotypes using external editors) and the results were pretty amazing.

I nailed the wing type inheritance pattern, with an expected ratio of 3 normal : 1 vestigial coming out at 3.21 normal : 1 vestigial.

However the sex inheritance was out, with double the amount of females coming out than males. It should have been 50/50 but was more like 66/34. So this meant some exploring of the genetics of the flies to try and work out why. It took me an hour or so to figure it out, but essentially I had 3/4 of the alleles in the population as female, and only 1/4 male and was only looking at 'one' allele to determine sex.

So my parents were XX and XY (as expected) however I had it set to test only the 'main_allele' and thought that would make it 50/50, however for that to be the case the male would need to essentially be YY, which is so incorrect I could not have it! So, back to the drawing board, to try and work out exactly how these patterns are read by Minecraft.

I ended up doing what I 'should' have done from the start, and females are those with 'both_alleles' as X and males 'either_allele' as Y. This of course creates an issue if you breed two males together (which I still haven't figured a way to prevent) and get a YY... I actually don't know what Minecraft is going to do in this case, but figure, for the purposes of the lessons in and around this, it doesn't really matter.

So, now that I have both the sex, and the vestigial wing inheritance patterns correctly working it is time to try and throw more patterns into the mix, specifically the sex linked inheritance pattern of white eyes. A job for day 6!

Thanks as always for reading! Feel free to leave a comment below.


Thursday 20 June 2019

Is Minecraft Only a Creative Solution for Schools?

This has been on my mind more and more lately as I see the global social media and feeds on what is happening in schools around the world. Admittedly, I am only seeing those using the #MinecraftEdu or @PlayCraftLearn tags and mostly on Twitter, but it is more and more 'only' about students creating to demonstrate learning.

Which I am not suggesting by any means is necessarily a bad thing, but what happened to the teaching lessons, those things we used to have where learning goals were embedded in the game? It seems that the vast majority of uses out there at the moment are students creating something as a demonstration of learning.

So I began to wonder, what happened? When did Minecraft only become a creativity platform for schools, and I think it is since Microsoft took the helm. I also think it has a great deal to do with the 'surface' level of understanding of "Minecraft the game" that trainers, and therefore those they have trained have. The number of users with access to M:EE continues to grow as more and more districts, regions and states (however it is broken up in your area of the globe) begin to license it, and as such there is a high level of 'inexperienced' Minecraft educators out there, who are looking for support. Microsoft holds the training, and uses their trainers, and while those trainers are great at getting people 'on board' and understanding what Minecraft is, and how it can be used at this base level, there is not enough knowledge out there in the majority of trainers about "Minecraft the game" to help people go beyond this low level usage.

I look back at the maps available 6 years ago, before Microsoft took MinecraftEdu off the shelves, and the 'hallmark' map and learning activity was really Eric Walker's World of Humanities. It was an immersive world that took students through masses of learning content, involved gameplay, quests, information and really used the best of what Minecraft has to offer for educational purposes. I would link you to the original page for that, but that is yet another thing that Microsoft have recently pulled off the shelves, and despite multiple community requests, and myself asking repeatedly for further information, we still have no visibility on the reasoning of that decision, or whether they will ever be made available again. That grump aside, here is an archived copy of the page with an outline of the world: https://web.archive.org/web/20160319171629/http://services.minecraftedu.com/wiki/Wonderful_World_of_Humanities

Second to that was probably Joel Levin's Escape from Everest map. One which I have been 'in the process' of updating to work with EE for about 12 months now, at the request of a community member, and sadly I just have not had the time to get that project over the line. I cannot get you an archived link to that one unfortunately, as I have been unable to access the old world library pages at all.

Of course I rank most of my original maps up there as 'learning tasks' in Minecraft, but they are also available for M:EE right now. Alongside mine, there were Shane Asselstine's maps where the tasks were always gameplay based, but tied tightly to learning outcomes, and many other user generated maps as well, all of very high quality, and using Minecraft explicitly for educational outcomes, not as a creativity tool alone.

I think the main difference between back then and now, which is by no means a fault of anyone, even though this post seems directed at Microsoft and their trainers by what you have read thus far, but back then, those integrating Minecraft into their classrooms knew the game, today to put it simply, the majority of teachers using this platform don't know "Minecraft the game" at all. What they do know is that it is loved by kids, and that they can join students together in multiplayer sessions, and that kids can create in it, but they know nothing about the gameplay, the mechanics, which of course means they cannot map learning into worlds or tasks beyond allowing students to be creative in this space. Alongside that, the majority don't have the time (or possibly the desire) to go and play, which is one key stepping stone to going beyond the basics in any learning tool, making the time to explore deeply to better be able to incorporate into lessons.

This is limiting the growth of learning tasks in Minecraft hugely in my opinion. Giving students the opportunity to demonstrate their learning of a topic in Minecraft is low hanging fruit, and while the end product may be far more interesting than writing an essay, or drawing a picture, is it really any different? I don't often 'call down' the SAMR model, but in this case it is quite literally using Minecraft as a substitute for a pencil and some paper, or perhaps a replacement for LEGO or making a diorama or poster.

Now look at the lessons that used to be available. Fully immersive worlds, with learning embedded throughout in gameful tasks. That is a redefinition of how education works, and that is the power that Minecraft CAN have in classrooms. It CAN go fluidly across all the different 'levels' of SAMR. However currently the larger community is stuck at only the basest understanding of this power and as such there are millions of students using Minecraft as a pen and paper creative tool, rather than an immersive learning environment.

So, what can we do to fix it? Well, here goes a bit more of a rant, I have been trying for years to get Microsoft and more specifically the M:EE team to see that the 'Mentor' community is not actually mentoring, a large portion of the members in that community in the past have been new to Minecraft. There is a greater portion of people within that community now that have game knowledge, but it is not enough of a ratio to tip the community over the edge. The community is a community of people from all over the globe, with knowledge ranging from absolute base understanding (or lower) through to very high level understanding about gameplay, and how to manipulate it to create immersive learning experiences.

All of that 'beyond the basics' knowledge is 'wasted' within that community. Sometimes I feel that Microsoft has misnamed the community, they don't seem interested in driving or supporting pedagogical discussions in that space or in community members discussing things and building lessons and worlds together, but are very interested in the community amplifying the message that Minecraft is good in classrooms for students. Which, it is, but there is so much more a true 'Mentor' community could do. Spreading the word is only part of mentoring, and in my mind is more of an ambassadorial type role. I think, in the end, until Microsoft and the M:EE team begin to value immersive lessons and starts producing content or challenges, or even supporting the production of resources, that go beyond the paper and pen substitute level, then we, as a broader community are stuck, and here is why.

I was told, when someone from the M:EE team saw Mini Melbourne a few months before release, that they didn't want students just exploring, which of course, in this case has massive inherent value for rural students and planning of trips. I also have some in-depth lessons available with many more planned, but to hear that from someone on the team that regularly brings us surface level worlds, with no embedded learning within them, was a bit confronting, and really, in my mind, showed that they can talk the talk, but perhaps cannot yet walk the walk. I say this because they still regularly release things at the basest level for all those teachers that are looking for, and need, the low hanging fruit, yet still, after many years of this platform being theirs, they do nothing to support those who are ready to go deeper, or looking for more than allowing creativity from their students in this platform.

So, as a community, what is next, other than waiting for Microsoft or the M:EE team to realise there is a need in the community for more than the low hanging fruit? I think we need keep building a community, I am still trying my best to share everything I learn, how I work, and why I make the decisions I do, and it is pleasing that there is a growing community of those interested in taking things further, beyond the basics. If that sounds like you, join the Discord (https://discord.gg/7fSQBdx) and start chatting to others about your outcomes and plans and see if, as a community, we can create something truly amazing.

Also, don't let my opinions of the Mentor community dissuade you from joining that community either, regardless of your experience in Minecraft in educational spaces, you will get something from that community, and as I have said in the past, the more educators that join that space looking to grow their practice, and willing to be open, share thoughts and honest feelings and collaborate with others, the better off the global Minecraft in education community will be.

That's it from me, I KNOW Minecraft is so much more than a creative platform, and I understand that all community members are on their own journey and need to start in a place of comfort, but some community members have been on a journey longer than M:EE has been around, and there is very little supported growth opportunity for them. Which also means there is little to available to support those beginning who want to go further, and I find that very disheartening. I hold hope that at some stage in the near future Microsoft and the M:EE team will begin to move beyond only supporting the low hanging fruit, and start supporting a wider range of embedded learning in this platform. If you have any comments, feel free to leave them below, thanks for reading.

Wednesday 19 June 2019

Genetics Development - Day 4 - Starting the Genetics

I should say, as this is the last post I am writing in bulk since starting the project, and I hope to do these 'one at a time' from here on, that while I am listing days, sometimes there were multiple days between these 'major days' where thinking happened and some minor testing, but I am trying, at this stage, to do 'goals' for each day I am developing this project.

So on day 4, having gotten absolutely nowhere with the male/female breeding thing, it was time to turn to the genetics side of things and try and wrap my head around that. Boy it was a productive few hours, again a 1am finish, but a happy 1am finish!

So, with the genetics, I had the Panda to refer to, but it turns out it is quite easy to do, I must admit I spent a few hours mapping the traits I wanted a particular way, and I am still only doing a small component of the genetics I want, essentially sex and two varieties of wing type. It took a few hours, but by the end of it, I had flies inheriting traits from parents.

Basically they inherit their sex from one of their parents (normally in it is from the male passing on either an x or y chromosome at a 50/50 ratio, and I think I have that happening already. They also can inherit wing type, and this should be a dominant/recessive pattern of inheritance. Where by if I breed a pure bred wild fly with a vestigial fly all should 'look' wild type, but their genetics should all be heterozygous for wing type.

If I then take 2 of the first generation, and breed them I should get one quarter of the offspring being vestigial and the remaining three quarters looking wild type. I have also started thinking about 'lethal' genes, as that is an important thing to discuss.

At this stage I still don't fully understand what I can, and cannot do in the entity definition, with regards to using tags that I create, I am still using the 'inbuilt' variant and mark_variant tags. Variant is the sex of the fly, and the mark_variant is the skin that overlays that. I have some work to do on the textures, and the models, because I think I may need 3 variables to use in the render controller, which is certainly possible, but I am not ready yet.

I haven't done any solid testing on the current inheritance pattern, probabilities or anything yet. That is actually the plan for day 5, create a few entities, see if I can 'edit their genetics' externally so I know exactly what they are, and breed them multiple times and record lots of data about what happens.

In the intervening days between where I finished on day 4 and am writing this post, I have remembered an experiment I did on these flies at university, that took a whole term to do, because of the life cycles of these flies in the real world, and in theory, if I can get this working. I can replicate that whole experiment, and get the exact same data out of it in Minecraft within about an hour.

So, I am really excited to see how far I can go, how in-depth it can be, and how authentic I can make it. That's it for now, thanks for reading, and if you have any comments feel free to leave them below.

Tuesday 18 June 2019

Genetics Development - Day 3 - Restricting Mates? Nope!

On day 3, I literally achieved nothing new. I ended the day in exactly the same spot as where I started it. I did however do a lot of testing and experimenting and learning. The goal was to try and make it, since I had clearly defined male and female entities, that only viable offspring were produced when a male and female mated. This is a genetics resource after all.

I was trying to use filters in places that apparently do not support them, double and triple checking syntax, trying to figure out what I could do to make it so that only males and females bred together. I tried all kinds of tags, like "self", "other" and "target" in the filters, but to absolutely no avail.

I went to bed at 1am (again) and woke up at 6am with what I thought was the answer.... but nope, sadly I was mistaken. In fact, as of writing these posts, I still have not solved this issue completely, although I have made a little bit more progress on it.

A very short post today, and that is fine, it was many hours, with a lot of no result at the end, but a lot of learning along the way! :D Feel free to leave a comment below.

Thursday 13 June 2019

Genetics Development - Day 2 - Getting it in Minecraft

Day 2 started where day 1 left off. I had packs, I had 4 flies, and now I had to work out how to get the game to render the four different flies. It started with the 4 flies, their models, textures and everything in the right place. I swear it! But no matter how I tried I could not get them to render.

The issue I was having was that the 'render controller' was being 'ignored' by the game. OK, so I had something wrong that meant the mobs would be spawnable, but have no geometry or texture. They did however cast a shadow! Which, given that I usually have issues even getting the spawning to happen was a step up from my normal first attempt at packs.

One thing I noticed was that there was a way of calling multiple geometries, and I had the example from the sheep mob to look at, but is used a 'set' data point, and I still don't know how to add my own 'conditions' to entities and call them out later for use.

So, I also had things like horses, who have multiple textures, but the one geometry, and I spent about 5 more hours trying to figure out how to 'merge' the two magics into one render controller. The really unfortunate thing, is there is zero 'clear' documentation on how anything works. There is plenty of documentation, but nothing that directly applies to me, and I have to try and stitch together breadcrumbs from about 4 different official Minecraft web pages into some form of coherence that both I and Minecraft can make sense of.

The big issue I have is that Minecraft doesn't really throw errors at you. Things just don't work, it ignores them, and continues doing what it does. It wasn't until I started making Minecraft actually crash that I felt that I was making progress.

After about another 4 hours work, I finally got all 4 flies to render in the game, based on different geometries, and textures, that I could 'call' upon when I needed it. Sadly it turns out that I had everything pretty much right at the start, only I was missing one, apparently, very important set of [] in the render controller. Oh well, 3 hours 'wasted' but not really, because I learned a lot!

So, this is where I ended day 2, another late night/early morning and bed at 1am!


Thanks for reading, feel free to leave a comment below.

Wednesday 12 June 2019

Genetics Development - Day 1 - Building the Base Packs

I was going to hold all of these posts until I had finished the genetics project, which will (hopefully) be ready and available for the next EE update. However, after getting to 'Day 6' I decided that I should put these out as I do them, like in the old days.

I am writing these posts as close to the days they relate to as possible, and the first 4 posts were written as a batch on the 30th of May, but instead of mass releasing them and spamming you with them, I will release them every couple of days until I catch up, then it will go back to 'as written' publication timelines. however I will leave them in draft form until I have completed the lesson and resources. So, if you are reading this, then I am DONE! Which, given I am currently about 4 days (around 20 hours) into my creation, I am very pleased about. Now, to business, and first business is background.

In Minecraft 1.8 they added Pandas, but while Pandas are special in their own right, they are also a bit extra special in Minecraft, because they are the only mob to have 'proper' genetics and inheritance. This started the senior biology teacher in me thinking about how I could utilise this to help me teach genetics to students, and how much I tried to do this 'back in the day' with MinecraftEdu, but the sheep just weren't a 'proper' model to support teaching. I ended up going with Pocket Frogs, but that is probably not a super key point, but still a really cool game for teaching inheritance and getting kids to think about the patterns that exist.

Anyway the idea has been stewing since Pandas came to vanilla Bedrock, but the idea took off into full flight mode once I figured out how to add my own entities. Not hijack those already in the game, but add my complete own custom entity. It was possible in 1.8 with 'experimental gameplay' on, but unfortunately they lock us out of using that in Education Edition (despite my requests to at least give us the option to choose ourselves).

So, I learned it because we had plans to include something in the first release of Mini Melbourne, but since experimental gameplay was banned, we had to pull back on our plans a little. The great thing for me, the learning had happened, and I was able to go back to stewing on exactly how I could do what I wanted.

Fast forward a few months, and I get told that the 'Village and Pillage' update for will come to M:EE 'soon'. So I think to myself "I wonder when custom entities got taken out of experimental gameplay." To my absolute delight, research said that 1.10 was the version, and since M:EE was going to be updated to 1.11 at least, I was right to actually implement my nefarious ideas.

So, onto what I did in day 1. If you have never tried to create a resource and behavior pack, do try it, and you will find that there are limited resources out there to help you, or there were when I started, more programs, guides and support are being made available all the time, which is all for the better, but getting started is definitely hard work! It took me about 5 packs to get the whole process stuck in my head, no joke. Day one consisted of the 5th attempt to create a pack, from scratch that would allow me to do what I wanted.

With the basic file structure of the pack created, it was time to go into Blockbench, an absolutely wicked program, that I need to do some tutorials on... add that to the list that is growing steadily longer because time.... is a precious resource, that I have very little of at the moment. What Blockbench allows you to do, is model an entity and export it to use in Minecraft (and many other programs, but my focus was Minecraft). So I spent the first 4 or so hours of this project creating my models, textures and a rough and ready animation and then getting them into the appropriate places in the packs.

4 Drosophila melanogaster models. Wild type male and female, and vestigial male and female flies.





With that all achieved, I went to bed, it was 1am after all. Next post, next day! Feel free to leave a comment below.

Tuesday 11 June 2019

An Update Post About Blog Posts

This, I guess, is a warning post.... I currently have 6 posts sitting in draft format that I need to release, written over the last few weeks, that show the journey of a personal project up until yesterday. I don't know exactly why I was sitting on them, I think part of it was not to 'disrupt' the flow of the Mini Melbourne development posts I have been writing, but it has also been a significantly long time since I shared the development of a project 'live as it happens' on this blog, and well I think this project is pretty amazing, and I am excited to share the journey with you as I continue to develop it. I also think that sharing the journey of learning as I move towards the end product is something that is super relevant, and will hopefully be helpful for others.

Mini Melbourne is amazing, and shows what awesome stuff can be done with a team of people, of wide expertise, and a clear focus on learning outcomes. What I hope to do with this personal project, is, as I get time, create something that shows just how flexible Minecraft can be as a teaching and learning platform from the perspective of one person volunteering time, exploring new game mechanics, researching and learning along the way in completely new territory for the educational aspects of Minecraft.

The Mini Melbourne development posts will continue as I have time to write them, but expect a few other posts between times too. If I can get my act together enough, I might also share some of the parts of this project as I move forward for others to have a mess about with. I need to say, that at this stage, this project is being developed outside of M:EE and in standard Bedrock at the moment, because the features are not available in EE yet. I guess one thing to ask, is do you, as a reader, want access? Would you like to explore what I am creating 'live' as it develops? Hard to answer, without knowing what the project is, I know, but all the background and everything is in the next post, I promise.

That's it for now, I will release these posts 'slowly' rather than all at once, maybe every second day. Feel free to leave a comment below, and as always thanks for reading.