XPanel #5: Activities 2/*
Published: 2021-10-21 08:05:10

[Wrong English Disclaimer](https://dev.to/alabex_/wrong-english-disclaimer-2daa)

ajdpfojaspdfojajpadf

I should finish my last post before..

I'm going to resume a lot all what I was doing..

* I need more players advising me about ingame details, at least while I'm with activities module... this is important.. so I decided start one of my old ideas:
**The Star Council**

This have to be a group of compromissed players who will decide the ingame details of the plataform features..  to evite me take choices by myself, or other single person by hisself..

So..

* I told some players about that and it was hard to xplain without visual support...  lets create a logo and a picture to try explain correctly the concept:

![XPanel-StarCouncil-Logo](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lxu5uq92hbwkvt11eeiw.png)

![XPanel-StarCouncil-Joinus](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1zhjtld32wsi6ip8cjwk.png)

(Wrote in spanish cause I was going to show it only to spanish people in first moment)

* Ok, with the visual support I ask other relevant players or organizations leads to try start form this Star Council group, I really need help for the activity templates choices.. ..but.. no good resoults.. I'm having more help when I stream in Software Dev Twitch category than from Star Citizen players... they are friendly and love my idea but preffer still play than help :) 

However two players was interested and they will try help me when they can,.. is not bad..

* I start create the Google Docs table to visual show the game activities in phase 1 and wich I need detailed info from players to implement in the backend logic..

![XPanel-Phase1-Activities-Concept](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f5stzwdv5clcte8m8hx5.png)

This activities grid was BAD, in the first moment I thought for example: 
> Mining activity has miners + pilot (from mining area) and posibility of explorer or escourt (from their respective areas) to complete the party.

This changed the day before I created cause I understand its complicated implement acitivies who need different roles of different areas and where players has to PAY to other players for their services, and ofc they will need a "renounce explorer" and "renounce escourt" ...   so much complicated for the users in the first phase of the plataform, and 20 activities was a lot.. so..

![XPanel-Phase1-Activities-Concept-Good](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hwxj2hz0m6footg76hoa.png)

I set only the simply and main activities without complement with players of other areas...    and I decided in the phase 1.X implement the **Contrats** section where players could offer their services, and then I can prepare it for groups or organizations too...  this could be a big independent feature in the future..  and so much simple for first phase of plataform.

* Ok, the problem continue, we had the activities of the game areas choosen, leeeeeeeets go prepare the templates...  I continue the Google Docs with the detailed data and try start form it with one player help, but ..  until the day im writing this post (2 days later) we had only mining activities details.. -.-'

After some changes and some different setups the table was like that:

![XPanel-Phase1-Mining-Templates](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6kvi6xeoutugmk0nill0.png)

As you can see, like I explained in my last post, there are different Game Areas > Every Game Area has different Activities (What player choose to play) > Every Activity has different templates (What backend use to try start activity) > Every template has his requiriments, and his required assets as group, and his related roles, wich they had his required assets too.

So the point in backend logic will be every time one player start queue is ask him the assets related to the activities he choosed and check how many roles can he play with this assets, after that, check if there are any template full of roles looking from the first player in queue and if we have available temlpate, then check if the players in it has enought assets to really start the template.

Everything of this checking language filter, time to play and taking players together if they queue up in group, this features are not implemented yet.

I'm resuming a looooooot all the process cause I had to include in DB the required_assets tables, solve the initial problem and think how to ask the assets to users with the simply form to still run like "Click and Go" concept what I want in plataform..  

* Obviously I create some html with activities list, temporally check buttons to chose it and a simply text inputs to all assets to test the functions, after a lot of work it was working..

![XPanel-ActivitiesModule-Process](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5i551xcaomnldlv6h6zd.png)

* I had to implement a system to send to front the (ActivityID + Asset + Minimum + Maximum) for every asset in every active activity to let a future JS script verify the choices and ask about only the needed assets to user before sent form.

* I implement the logic to check if with this assets the user has viable roles in backend and create the activity queue record and save all the posible roles and his assets list (it was not implemented in models yet)

* To make this viable I had to implement a first concept of characters list in characters app to let user select his active char between the chars he has claimed..

![Xpanel-CharactersList-Process](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9kb6rmh7h9zharxyfy1u.png)

It was bad implemented, cause I wanted include the whole active_character object in sessions like user,.. and I didnt find the correct way cause it only let me JSON friendly add.. maybe I should save every data in different request.sessions[X] var, but I really didnt want it, and save one request.sessions[active_character_id] and call it in every view to then get it from DB is useless af..  I decided just implement my function to get active character and call it from the begin of eeeeeeeeeeevery view...  
 ..this is BAD, I know, the correct solution probably was using a Middleware ??¿¿

Idk but I have not enought time to networking + designs + thinks in logic + thinks in gameplay details + learn python/django big and little things + dev the backend.... so, this works for now,.. 

sigh...

* I didnt wrote it in correct time point, but I was like one day fighting vs the manytomany relations in django admin autogenerated forms, a few hours until I discover the StackedInline, and mooore or less I get a correct way to create templates without turn me crazy :)

![XPanel-ActivityTemplatesAdmin-Process](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ug4uujjubycmn1h0lc57.png)

Obviously I did a lot of more things, like 5 hours talking with different players getting super good feedback but zero help, etc..

I hope today I finish the activity module.. we will see..

Sorry for my awesome bad english and write style if you arrived here xD

Cya!