CPCWiki forum

General Category => Programming => Topic started by: zhulien on 09:03, 22 September 16

Title: 8bitology.com
Post by: zhulien on 09:03, 22 September 16
hi, hope this isn't a bad news... but - i have released the first cut of 8bitology.com

http://8bitology.com/

Please take a look, I will publish in there the 8BML specs as well as make available the PHP code that allows you to make websites that work both in HTML and 8BML at the same time.

I will also shortly publish the API for 8bitology so you can review it while it is being implemented - this will allow 8-bit computers (and others i guess, but I am doing it for the 8-bit community) to share files, send messages to eachother and have game leaderboards / achievements.  This from software "on the 8-bit computers"...

With the release of the awesome M4 board from Duke and the cool hardware from Cent Pour Cent - CPC along with other 8-bit computers will soon be browsing the net, chatting to eachother, with leaderboards in-game!!!  Game developers who want more details of the API and want to help Alpha testing it, msg me too... I am only aware of the M4 board at this stage making it easy to connect CPC to the net, but it might also be possible with a MiniBooster card and if you still use a RS232C / Serial modem and a Slip Account but... why go back to the 80s when we have Wifi now...

To view 8bitology.com in 8BML, just append ?8BML= to the URL..., ie: 8bitology.com?8bml=

Add &checksize = to get the page size (useful for developing to keep pages under a certain size)...

The landing page there is 3253 bytes uncompressed 8BML... CPC will have no problems with larger pages, but I am targetting 16kb less so that unexpanded 464 users with M4 card can happily browse the net of 8BML pages...

Whether a proxy server facility eventuates... to translate dynamically html to 8bml, who knows the future, but not yet a goal...

with 8BML we can make a browsable front end to CPC software repositories that CPC itself can browse, download and do what we want to do quickly and easily without the file juggling of the past.

Julian
Title: Re: 8bitology.com
Post by: Bryce on 10:16, 22 September 16
I assume this site is being hosted on a CPC?  ;)

Bryce.
Title: Re: 8bitology.com
Post by: elanstra on 15:29, 22 September 16
Looking forward for the CPC 8BML Browser
Title: Re: 8bitology.com
Post by: zhulien on 16:20, 22 September 16
The browser will come.

Here is a POC of the renderer logic...

awb-prototype - JSFiddle (https://jsfiddle.net/zhulien/dw1zpgs2/)

Usually i do my prototyping in js these days... if js didnt have the cross site scripting annoyances then that poc could render 8bitology.com - lucky cpc browser wont have the cross site restrictions.  First version wont render images inline but full screen when clicked on.
Title: Re: 8bitology.com
Post by: zhulien on 16:20, 22 September 16
I am unfortunately having to do the different parts of the projects one at a time but they actually are all related in some way.
Title: Re: 8bitology.com
Post by: zhulien on 08:02, 26 September 16
I have added the 8BML spec online as well as examples and PHP tools to let you create 8BML-enabled sites.


Now you can all start 8BML-enabling your websites... and you can try beat me in creating an 8BML-enabled browser :D

Title: Re: 8bitology.com
Post by: Prodatron on 12:18, 26 September 16
I had a quick look at the 8BML specs. It's probably a good idea to keep it in this simple way! What are the specs for the "Amstrad CPC" image format?
Title: Re: 8bitology.com
Post by: zhulien on 14:40, 26 September 16
I'm actually open for suggestions with the image and audio formats.  I already know how to do the mean and nasty download a 16kb screen dump, but maybe there is a better more universal way.  We can already show JPG on CPC but very very very very slowly, but if the CPC format is more defined than a bitmap, then maybe the server can take another parameters as a preferred format later an the server can do the conversions...


any suggestions?


v1 I have also limited a page to have a single form, what happens with normal browser, they will do a post, but with good old CPC the parameters will pass on the URL, it's handled simply by the appropriate renderer... I also have to consider that screen widths are not that wide with CPC and other similar computers so form downloads links are all vertical for now - even catering for no mouse, so CPC will have the ability to have a row selector, not just mouse.  The spec page itself with the rendersize ( http://8bitology.com/8bitmarkup.php?8bml=&rendersize= (http://8bitology.com/8bitmarkup.php?8bml=&rendersize=) ) is 4182 bytes.  Good enough to fit on unexpanded 464.  I would like to cater for 16kb pages as a 'MAXIMUM', so then we can have other pages with searches and native CPC downloading of dsk files or other things.  I can create a basic HTML to 8BML parser but, i debate how many sites these days are plain HTML enough to be translatable, and then of those how many are likely useful for us anyway.  So, having a single page coded that renders in HTML and 8BML is a good compromise. 
Title: Re: 8bitology.com
Post by: zhulien on 08:57, 27 September 16
I have added the 8bitology API spec online.  As this is still in development examples and CPC tools to coming in future.  But you can start planning your new 8bitology API-enabled apps and games.


Key functions covered by the API:

- User Registration, User Status, User Profile, Listing Users etc...
- Instant Messaging
- Application/Game Registration, Application Profile, Listing Applications, Listing Users within Applications etc...
- Application Achievement Management, Achievement Listing, Achievement Status settings etc...
- File Uploading, File Downloading, File Sharing, File Profiles, Listing a User's Files (their uploads/shares) etc...

99% of is really simple management stuff and I plan to create a CPC native client for doing the above tasks.  Of course some things are supposed to happen within Apps/Games, but they all can gain the ability to have instant chatting and a rudimentary networking facility may come also.
Title: Re: 8bitology.com
Post by: TFM on 17:45, 27 September 16
For screens it would be imho a good idea to use OCP compressed screen format. It saves space, and one can easily compress and decompress it.  :)
Title: Re: 8bitology.com
Post by: zhulien on 14:50, 28 September 16
Can ocp format support different non full screen sizes?
Title: Re: 8bitology.com
Post by: TFM on 21:28, 28 September 16
Quote from: zhulien on 14:50, 28 September 16
Can ocp format support different non full screen sizes?


There is a format for 16 KB screens. And there is a format for windows (parts of the 16 KB screen). It doesn't support overscan (more than 16 KB V-RAM) though.


The formats are described in Arnoldemus collection of CPC documents iirc.

Title: Re: 8bitology.com
Post by: zhulien on 11:35, 03 August 17

I have finally finished the first version of the 8bitology API for use with 8bit computers.  Although it will work on any computer, it is specifically created for 8bits.  Perhaps in future I might allow for 16bits too, but only if there is enough interest.


I will soon code a front end for it for use on the CPC for management of your accounts and games and likely an 8BML one too for use in browsers.


If anyone wants to start using it or have a quick read over it, please do!  Also feel free to start including support for it in your games!


In addition to that I have enhanced the 8BML PHP libraries slightly too.  These libraries are what the 8bitology.com website is coded in.  The website will render in an equivalent way on a standard browser as well as an 8BML browser.



So both the API and 8BML are ready for use...  I am hoping some cool sites get coded with it (for example, the CPC Games sites) so that full navigation is possible on a standard CPC (when the 8BML browser is finished) - of course the 8BML is very simple so maybe one of you guys will have an 8BML browser completed before mine!!!  Maybe the awesome Prodatron might like to make one for Symbos?


I am interested in all feedback, good and bad.  I am also interested in whether you like the way the standard html renders (remembering that it renders from the same PHP code that renders the 8BML).
Title: Re: 8bitology.com
Post by: zhulien on 14:11, 03 August 17
I've now added a CLI tool for testing the API.
Title: Re: 8bitology.com
Post by: zhulien on 05:43, 05 October 18
Hi everyone.


The 8bitology API has been available for some time as a first cut. Unfortunately not much interest so far i guess, at least from a CPC point of view.  We actually have the best internet connection of all 8bits with the M4 card..  Are there any game authors who would like to add internet support to their games? Whether it is awards/trophies or multiplayer support? I'd be more than happy to give guidance and if there are any server issues... Address them.


Also.. Anyone wanting to take up the challenge of coding a reusable 8bml parser in assembler? Current implement of algorithms in JS and Locomotive BASIC for guidance.


I am hoping we can get to the point of having a useful lobby and browser in Symbos too.
Title: Re: 8bitology.com
Post by: Targhan on 17:33, 05 October 18
I admit I have trouble understanding what this is all about, maybe I'm not the only one? Going on the webpage, I don't see any clear explanations about what it does, what I can do about it. Maybe you can show us how to use what you have created? What could be done with it?
Title: Re: 8bitology.com
Post by: GUNHED on 23:02, 06 October 18
Quote from: zhulien on 05:43, 05 October 18
Are there any game authors who would like to add internet support to their games?s too.
Actually yes. We are :-) I also remember that Defense is doing high-scores in the internet using M4 card.

What I'm interested in is how to do such things? Since I got no idea about all the internet stuff it would be nice to have some kind of "manual" how to release such things.

How could we use your project to do a high-score-list in the internet for example?
Title: Re: 8bitology.com
Post by: zhulien on 12:50, 07 October 18
Quote from: GUNHED on 23:02, 06 October 18
Actually yes. We are :-) I also remember that Defense is doing high-scores in the internet using M4 card.

What I'm interested in is how to do such things? Since I got no idea about all the internet stuff it would be nice to have some kind of "manual" how to release such things.

How could we use your project to do a high-score-list in the internet for example?



This can be done either by every developer coding their own WebServices, or by using on that is available.  8bitology API provides such an API so that everyone can find each other within a Lobby type setup, but everyone can look at each other's and voteup/votedown achievement within the games too - it also would allow people to realise what other net-enabled games there may be.


The API is documented here:


http://8bitology.net/api.php (http://8bitology.net/api.php)


General, Users and Messaging are all developed and working (hopefully bug free) and provide facilities for creation of a Lobby type application in the CPC or within a game.  Having a generic Lobby application could be benefitial - does anyone want to code this?  It could be coded in BASIC or Assembler, a ROMable one would be awesome...


I do plan to finish the online Lobby functionality, but it really is more elegant on the computer/device you are playing on than having to go to another computer.  Having said that, this website is fully 8BML compatible, so if someone wants to finish an 8BML browser, that would be even better than a Lobby application!


Applications, Achievements and Files - these are at various stages of testing.  If someone gets to the point of wanting to register an application to submit achievements for 'players they have registered', then I will work with them and finish testing these, debugging my side and ensuring it works as the game developer needs.




I provide a tool to test API calls from the web in the members area.


eg:


function=user_register&emailaddress=julian.cassin@gmail.com&name=Julian&password=BLAHBLAH


but from your app, you would call like this:


http://8bitology.net/ws.php?function=user_register&emailaddress=julian.cassin@gmail.com&name=Julian&password=BLAHBLAH (http://8bitology.net/ws.php?function=user_register&emailaddress=julian.cassin@gmail.com&name=Julian&password=BLAHBLAH)


(I would recommend making this bit - http://8bitology.net/ws.php (http://8bitology.net/ws.php) - configurable, perhaps read from a config.ini file so you can point to different servers)


For this specific API, you would usually only register yourself once, through a lobby app, or the website.  Follow the emails sent and you are emailed a Secret ID.  This is your Secret ID that represents yourself and you should not share this with anyone.  Ideally it will be stored in a local configuration file (8bitology.ini?).


We have Secret IDs for people, but also for applications, achievements etc.  As well as Secret IDs, we also have Public IDs.  They are interchangeable actually - however when you use a Secret ID, you get increased permissions to the site that allows you to see your account, maintain your achievements etc - Secret IDs should NEVER be embedded within an application or shared with other people.  The Public IDs are what is used in your application, and can be compiled in.  These will be triggered when your application calls the API, for example:




function: achievement_setvalue
parameters: <secretuid>, <rid>, <value>
response: true or false
description: Set selfs achievement value (*usually updated by a app).






function=achievement_setvalue&secretuid=1111&rid=2222&value=1000  (in the tool)
http://8bitology.net/ws.php?function=achievement_setvalue&secretuid=1111&rid=2222&value=1000 (http://8bitology.net/ws.php?function=achievement_setvalue&secretuid=1111&rid=2222&value=1000)  (from within your game)


The secretuid 1111 should come from your 8bitology.ini file because it identifies you that you want an elevated permission to set the achievement 2222 for you (if 2222 was what the system allocated your HiScore achievement ID).  1000 would be your score.








So, everything is in a certain state but with an ideal state not yet reached.




Ideal State:




- Code Generic Lobby applicaiton for CPC or an 8BML browser
- Finish Website Lobby GUI (if 8BML browser option is chosen)
- Code library for use by CPC game developers (RSX for BASIC?  C for other?)




Note: this entire project is open too (if that is important to you), so if this server was to one day go offline, another could be promptly brought up.




- v2 roadmap... in consideration...




Beyond completing what is there, the intention is to provide some tools for assisting developers with multiplayer games.  In particular, in realtime but not limited to.  Basically allowing the server to be a hub for player positions projectile positions and potentially object positions within games.  Parts of this could be sooner if someone needs them sooner... and wants me to work with them in making this suit their needs.


ps.  No Passwords are stored, only hashes.  These days people don't store passwords unless they are big companies like... those mentioned here :D   https://haveibeenpwned.com/ (https://haveibeenpwned.com/)
Title: Re: 8bitology.com
Post by: zhulien on 22:56, 07 October 18
A bit of a sight restructure - an interim one - to introduce the members area.  This is where you can login, maintain your account as well as register* your game/application and create achievements*. 


*soon...


I have another 4 screens before you can message eachother there before I move onto the Application Registration and Achievement creation screens.  Note: these screens themselves are using the same API that a game would - I could have used the underlying functions, but doing it this way gives the ability to test the API in addition to creating 8BML-enabled pages.
Title: Re: 8bitology.com
Post by: GUNHED on 00:24, 08 October 18
Thanks for your comprehensive answer, I really need to read / understand all this. For the beginning it would be totally sufficient to get some code which allows to:

"Save highscore with XXXX points for User XXXX"

...and...

"Get highscore list from internet"

Anything else I can code around it and also release the source code for it (like how to show it on the screen etc.).
Title: Re: 8bitology.com
Post by: zhulien on 21:21, 08 October 18
full user to user messaging is now implemented.  I am sure there are bugs (logged one already) but nothing serious so far.
Title: Re: 8bitology.com
Post by: zhulien on 21:23, 08 October 18
Quote from: GUNHED on 00:24, 08 October 18
Thanks for your comprehensive answer, I really need to read / understand all this. For the beginning it would be totally sufficient to get some code which allows to:

"Save highscore with XXXX points for User XXXX"

...and...

"Get highscore list from internet"

Anything else I can code around it and also release the source code for it (like how to show it on the screen etc.).


I will try... at least put together a bit of a howto to get people started.

Are you coding in Assembly Language or BASIC? or Other?

Title: Re: 8bitology.com
Post by: GUNHED on 12:39, 09 October 18
Only Z80 code.  :)
Title: Re: 8bitology.com
Post by: zhulien on 12:36, 10 October 18
I will over the next week or two try put some examples and a library together in Z80... and BASIC (likely a set of RSXs and if possible just plain BASIC, which I believe is also possible with the M4).  Once it is proven working and debugged, I will open the server fully with downloadable server code too in case others want to host their own servers.
Title: Re: 8bitology.com
Post by: zhulien on 17:14, 10 October 18

Hi,




I have put a little bit of an overview and howto (blurb) here, please review - Other than working examples that I will provide and some screenshots of the portal (once the application registration and achievement registration forms are done)...






http://8bitology.net/api/users.php
http://8bitology.net/api/messaging.php
http://8bitology.net/api/applications.php
http://8bitology.net/api/achievements.php




Is what I have written understandable?  Examples will make it clearer.




eg:




"Achievements can be given either a boolean (true or false) or a numeric value. An example of a boolean achievement could be 'Became a 10th Level Wizard'. An example of a numeric achievement could be 'Percentage of Game Completion' or simply 'High Score'."




Also, I designed the achievements bit over a year ago and there are a couple of minor things I want to change.  In my mind, I was thinking the following and would like your opinions:




1 - how important is it to have multiple achievements for the same game, but different sessions at the same time eg:  if you have played something like fallout shelter, you can have up to 3 concurrent games and choose which you want to continue or play at any time.. or many Nintendo DS games let you choose a save slot for which to play in and they are all treated separately.  I can do this if you think it is worthwhile.  (the number of sessions would be up to the game developer)




2 - I need to put the ability to reset achievements back to zero I guess... in case people want to play a game 'again'... but if I create multiple sessions as in point 1, this really doesn't matter as a new game from scratch is a new session




3 - I was thinking about the possibility of achievements being kept across different games depending on the developers desire, is this a good thing or not? eg: Bullet Hell Shooter Z could give additional features if Bullet Hell Shooter X was completed first.




4 - cheating.  As with all the achievement servers, it will be possible to disassemble the game (or look at the BASIC source if it's BASIC) and cheat.  I don't think there is any game server that has a full proof system preventing people from disassembling the game... just some are more difficult than others. I can try make it more difficult to cheat, but it cannot be fullproof - Most of the game servers have a reactive type of policy that if you look suspicious they might ban you. 




My thoughts are as follows... we have the ability to voteup and votedown achievements of other players.  If an achievement is voted down too much, a message could be sent to the game developer and leave it to them as to whether they want to do anything or not (not sure what I would let them do though)... it could be to delete an achievement? 




The current intent was to just leave cheats there, display the leaderboards with in a weighted order based on votes (voted down too much and they are at the bottom no matter what).




Any suggestions on how to best handle this? 


5 - These 2 things are planned for future, that is... multiplayer position tracking as well as object tracking (where is it and who has it). 



Title: Re: 8bitology.com
Post by: zhulien on 20:34, 17 April 19
I have now proven that I can create Amstrad CPC Native (BASIC) Apps that fully utilise web services.

So far, API libraries are coded, I am coding an Amstrad CPC BASIC client (equivalent to 8bitology.net member area) so you can use it as an example.

I have also been thinking of some APIs that help multi-player game development on CPC - both in BASIC and not.
Powered by SMFPacks Menu Editor Mod