Contributor Hi there, I am Shade254!

Shade254

New Member
Contributor
  • Name: Miroslav "Shade254" Matocha
  • Social:
    Github (As I worked on commercial projects, there are mostly old stuff(2y+) and trials to be seen)
    Twitter
  • From: Czech Republic. Currently studying in Prague
  • Skills / Tools: I had started with C and robotics (I still own and use Arduino and RPi :) ). Then on high school I learned myself Java - SE first, then Android, EE as last. After high school I had worked in a great company in my hometown. People there guided me through all important steps of sofware development as is using git on larger projects, testing, SOAP, REST, etc. I had been working there for almost two years, did two big projects: media-dispatcher, EET service for eshops(ask for more if interested). Concrete technologies which I used were: Java, Maven, OSGi(ServiceMix), ActiveMQ, Jersey, and more. I also attend Open Informatics programme on CTU which gave me that backbone of computer science theory. Yeah and also forced me to work with multiple languages from C/C++ through Python to such enormities(for me) as are Scheme and Haskell. Which made me unconcerned about language and taught me to learn new paradigms very quickly (coz deadlines).
  • Found via: Ashamed that I had learned about this just few days back because of GSoC
  • Interests: So the thing that caught my eye most was that idea from GSoC Ideas about introducing Android frontend to ServerFacade which gianlucanitti did last year. I thought about creating pleasant to use mobile app written in Kotlin. My intention is of course to learn myself more from this wonderful language, also with Kotlin Native future ports to IOS or so will be more doable, as interface is basically the only thing which will need to be changed. But I am open to almost any work at this project.
  • Extra: I like cats, music and Red Dwarf. I also got into crypto development while ago as a hobby.
I already made myself somewhat familiar with codebase and work from last year. And I have a few questions to ask (maybe even issues?).
I run Terasology with serverFacade from here on loacalhost docker. I followed posts from last year.

1) I don't know if it's just me or http://utility.terasology.org:8000/ does not work (not a big problem though - frontend is also hosted on Github )

2) If I attempt to install any mode from web utility I got error screen (attached). Docker logs shows successful modules fetching and nothing suspicious afterwards. Same issue with PUT method called from Postman. I get
JSON:
{
    "message": "Module dependency resolution failed."
}
even if I pick some basic module with no dependencies and one version only. So it seems more like facade fault.

3) As I launch game through launcher I can see "localhost" perfectly in "Join Game". But If I try to connect to it, Terasology crashes. Did I do something wrong or did I discover a bug?

My concrete proposal is in work. In the meantime I will be happy to dig more into any of these issues, although I will appreciate guidance about which to choose and how to approach. If these issues don't belong to this thread I am sorry (pfff first timers), I will be happy to repost somewhere relevant (like github i suppose).
 

Attachments

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Ohoho Kotlin! That's been a hot topic on and off, along with Scala, even for consideration somewhere within game land itself. We support both in modules although it is a little fiddly to get to work right now, and runs into sandboxing issues soon enough as we haven't really updated the whitelist well enough to consider some of the basics from Kotlin and Scala.

Nicely done already getting into the server facade. Two big issues I can hopefully answer:
  1. The server that runs utility.terasology.org recently got rebooted after some OS patching from recent vulnerabilities, and all sorts of stuff didn't appear to start right. I took a quick look but am not a Docker Dude (unlike our resident but busy @qwc) so I'm not sure I got everything started right or in the correct order. Or whatever runs the thing on port 8000 isn't from Docker anyway and I just haven't spotted what runs it (probably the case). Pasting some stuff below for reference
  2. The server facade hasn't been touched since we merged v2.0.0 into the engine, which in turn required a ton of module version bumps to avoid module dependency resolution errors. I didn't check on it to see if it needed any related tweaks and since that's the sort of error you're getting I'd suspect that's at fault somewhere. But I'm not sure quite where to look. Maybe the Docker image is out of date and it would work if run entirely via source? You can embed the server facade into a Terasology workspace via `groovyw facade get FacadeServer` (hmm maybe we should update that name sometime..)
The Docker stuff on utility.terasology.org looks like so, in case I missed anything obvious. I'm not sure they were all started in the right order, I just kept starting things till they stuck:

Code:
root@utility:~# docker ps
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                                            NAMES
f4b37a96eb3f        terasologykeyserver_webapp     "/bin/sh -c ./dock..."   4 weeks ago         Up 6 days           127.0.0.1:8081->8081/tcp                         terasologykeyserver_webapp_1
e0aceb247294        docker_snowplow                "/opt/snowplow/doc..."   6 months ago        Up 6 days           0.0.0.0:14654->14654/tcp                         docker_snowplow_1
f63ded4385cc        docker_kibana                  "/docker-entrypoin..."   6 months ago        Up 6 days           0.0.0.0:5601->5601/tcp                           docker_kibana_1
f39f5af51295        docker_logstash                "/usr/local/bin/do..."   6 months ago        Up 6 days           5044/tcp, 0.0.0.0:9600->9600/tcp                 docker_logstash_1
dea1e228bffd        docker_iglu                    "docker-entrypoint..."   6 months ago        Up 6 days           5432/tcp, 0.0.0.0:8080->8080/tcp                 docker_iglu_1
20166a8d3a13        docker_elasticsearch           "/docker-entrypoin..."   6 months ago        Up 6 days           0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   docker_elasticsearch_1
f8b0f414c12e        terasologykeyserver_database   "/app-scripts/dock..."   7 months ago        Up 6 days           5432/tcp                                         terasologykeyserver_database_1
a84cf11d83b2        catatnight/postfix:latest      "/bin/sh -c '/opt/..."   7 months ago        Up 6 days                                                            terasologykeyserver_mailer_1
In any case welcome to the community! That's a cool item, it would be nice to see another round of improvements made in that area :)
 

Shade254

New Member
Contributor
If I understand this issue well Kotlin should be fully interoperable with Java, I already used it mixed in one of my assigments (although I get that it could be little trickier with big project full of dependencies and whatsoever) ... however ... I think in Android app, with code somewhat separated from Terasology main code there should be no problem. And it should be also safer choice - as Kotlin became official Android language and uses all that fancy nullable operators etc.

1) According to that blogpost the frontend for server facade should be running at port 8000. And if I am looking correctly at that posted output it does not run anywhere near your docker, even on another port.

About another two issues which I wrote down:

2) You were absolutely right, the problem was in old docker image referenced from that blog post, but simply new build of FacadeServer was enough to bring module installation to work. For anyone interested I updated that docker image and uploaded it here.

3) So this is the only issue that persist. I discovered where I previously messed up - server was up and running but without any loaded game to play. I dont understand why is such a server in the menu then. Shouldn't just started games appear? If it makes sense, should I dive more into this and does anyone have some specifics about where to start?

Thanks in advance :)
 
Last edited:

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
Hey @Shade254 and welcome!

Kotlin sounds like a sane choice to build an Android app with these days, and as you've pointed out, it would not be part of the main code base and there should be no problems with interop in any way. Considering Kotlin native for an iOS port later on sounds interesting as well :)

I'm looking forward to your proposal. If you have a draft already share it early, gives you higher chances of retrieving good and valuable feedback in time. Also: getting your hands on the Docker stuff is a good start, we appreciate any contribution and bug fixes like that!
 

Shade254

New Member
Contributor
Thanks for welcome @Skaldarnar :)

I got your advice, my first draft is stored here:
https://drive.google.com/file/d/1TNJ516eHaVge-G9fBwxOBGu-zHroOwpB/view?usp=sharing
It lacks implementation details and timeline for IRC integration and details of academic experience, which will be filled in later this week. Everything else should be already included.

Sorry its pdf, I used libreoffice and import to GDocs was messing things up.

I will welcome any feedback from anyone concerned. You can also add comment if you think anything from strech goals (AWT update and integration, controling game by IRC via some bot framework, ...) would be more interesting or beneficial that my current plan for last 3 weeks - integrating sending and receiving messages through ServerFacade. You can reach me by comments on that file, in this thread, or at email. I would be very thankful for that.
 
Last edited:

Skaldarnar

Development Lead
Contributor
Art
World
SpecOps
Thanks for sharing the proposal. I left a few comments on the PDF, but unfortunately I'm not the right person to give technical feedback on app development or server interaction :D
If you want to improve your chances to get in you should get your hand on the code. I bet there are some smaller issues you could solve. Alternatively, add a small feature to the existing facade server or the web frontend ;)
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Checked out the proposal as well :)

I love your focus on throwing more testing in there, that's very much appreciated.

Akin to how @Inei1 put some notes in the other proposal about impacts if both proposals get accepted, could you weigh in any here or in the proposal for how you think that would work out? Or maybe specifically in the proposal since forum posts seem enthusiastic about working it out.

There are also three weeks empty at the end of the timeline, is that buffer or something waiting for an update?

If needing some stretch goals I would suggest further tests for the ServerFacade and related stuff if you're into unit testing, along with docs/tutorials both for there and on the Android side since that all sounds very useful. You could also have a potential hook to add in additional features to the Android app if they are implemented on the other side by @Inei1 early on. Or figuring something out about also hooking our game launcher (TerasologyLauncher) up to the server front-end so you could control a server that way.

On a rather unrelated note if you're into Android we have some known issues over in Destination Sol that could use some expertise, but it would probably be hard to call those stretch goals for here :) Mostly comes down to logistics (improve the development workflow to easier test on Android) and fixing one or more compatibility issues in Gestalt on Android (the v2 DS (develop branch) doesn't work due to NIO usages in Gestalt)
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Oh, one additional highlight, to echo @Skaldarnar: at this point it would be good to throw some sort of PR at one of our repos on GitHub. Not that I doubt your skill, but it is a general thing we ask all students to try doing for something :)

I've also done some poking on Slack to see about getting some more technical review in place. Might help to get both you and @Inei1 invites for there, if so just let me know emails to invite or just say to use your forum emails
 

gianluca_n

New Member
Contributor
Hi @Shade254, I just posted some comments on your proposal in case you are interested :)

Also, regarding the issues you report on your 1st post: http://utility.terasology.org:8000/ is not working because it was just being served from a Python SimpleHTTPServer process which hasn't been restarted after the server reboot mentioned by @Cervator . As you notice, the same page is hosted on GitHub pages as well. The reason it was on the utility server was to provide a plain HTTP version as well (vs the HTTPS-only hosted at GitHub) because for security reasons browsers block pages served over HTTPS from doing plain HTTP requests, something that our page needs to do to retrieve modules from the meta server.

For the other two points unfortunately I don't really have a quick answer, I'll see if I find some time to look at it. It may be related to the version of the engine being packages in the Docker image not being up-to-date with the latest engine releases. Maybe you could try by running FacadeServer from your dev environment (there is a gradle task to install facades, IIRC you need to do something like "gradlew fetchFacadeServer", then cd to facades/Server and switch to the develop branch; you may find this wiki entry useful).
 

Shade254

New Member
Contributor
Thanks for comments and replies! I am sorry I was unactive because of my duties.
But I am back, I rewrote my proposal to target just frontend and features not proposed by @Inei1
New version resides here: https://drive.google.com/file/d/1ZH2EjdcSsUhisZJ2W6WMZRmzmj5D5oEQ/view?usp=sharing anyone with helpful feedback is very welcomed.

@Skaldarnar Thanks for it, I prepared the mockups and cleared some things out in new version. Also got your advice and got to one pull request
@gianluca_n thanks for your feedback and resolution about previous issues. I already got that two working - first was due to outdated docker(reuploaded it above) and second one was engine fault, simply repaired in few lines of code
@Cervator Thanks for advice I hope I could get rid of these flaws. I reuploaded my proposal with focus on frontend, this solves my overlap with Inei1. That also mean I had to abandon my testing planes for FacadeServer :D but I came up with another features and more detailed app proposal, I would be happy if you could look at it anytime. That three weeks wasnt filled up by me, but timeline is complete now. About getting hands on code - I done something as mentioned above. Will try to do more in next days. Also Slack channel seems like a nice thing to be part of, I will be happzy to attend under my forum address
Destination Sol seems like a nice thing to do, unfortunately I dont have much times with my activities these days, but I'll give it a look later for sure.
 
Last edited:
Top