Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [Magic Light] - Première Démo / Prototype Jeu
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

[Magic Light] - Première Démo / Prototype Jeu

Posté le 23/11/2021 20:37

Hello,

Voici la toute première pré-release publique du petit jeu que je suis en train de coder pour la Graph 90+E (désolé sur les modèles monochrome ca le fait pas) : Magic Light.



Il s'agit d'un petit puzzle game dont le but sera de se balader dans un chateau, mais avec des portes fermées qui ne peuvent s'ouvrir que si les bons détecteurs sont éclairés avec la bonne lumière, chaque porte peut être ouverte en activant 1, 2 ou 3 détecteurs de couleur à la fois.

La lumière de base est blanche (petite boule au centre de l'écran qui peut être sélectionnée avec F2 et déplacée avec les flèches). Quand la lumière traverses les blocs de couleurs, Rouge, Vert, Bleu ou Noir, sa teinte change. A vous de trouver la bonne position de la lumière et des blocs pour ouvrir les portes.

Quand une porte est ouverte, donnant sur un escalier, notre perso peut franchir la porte et changer de pièce.



Comme vous pouvez le constater, c'est une pré-release qui sera amenée à beaucoup bouger, mais je voulais donner un aperçu pour connaitre votre ressenti.

Pour quitter : [EXIT]

Je voudrais implémenter les fonctionnalités suivantes :
- score basé sur le nombre de déplacements
- coffres au trésor avec bonus de point/carte du donjon/aide diverses
- un bloc blanc à "peindre" avec un colorant à collecter au fil de l'aventure (sorte de joker)
- des monstres
- un boss ?!?

Je vous laisse découvrir et me faire vos commentaires ...

A plus

Sly

Fichier joint


1, 2 Suivante
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 23/11/2021 21:20 | #


Pas mal ! Ça en jette avec tous ces effets de couleur. *_*

Sur la calto c'est un peu lent, mais tu auras tout le temps de voir en vrai. Comment est-ce qu'on sait quels détecteurs contrôlent quelle porte ?

Aussi peut-être qu'une minimap pourrait être utile ? J'ai l'impression qu'on aura vite fait de se perdre.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 23/11/2021 21:41 | #


Lephenixnoir a écrit :
Pas mal ! Ça en jette avec tous ces effets de couleur. *_*

Sur la calto c'est un peu lent, mais tu auras tout le temps de voir en vrai. Comment est-ce qu'on sait quels détecteurs contrôlent quelle porte ?

Aussi peut-être qu'une minimap pourrait être utile ? J'ai l'impression qu'on aura vite fait de se perdre.


Pour le moment il faut deviner mais je pense a plusieurs options (peut être selon le niveau):
- inscrire sur la porte (mais un peu trop facile, ok au début mais en avançant dans le jeu il faudra passer à autre chose)
- système d’indices / énigmes (faut que je teste une idée)
- solutions pour quelques portes via découvertes de coffres

Pour la mini map, c’est prevu pour la zone grise de droite.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 25/11/2021 22:12 | # | Fichier joint


J'ai juste eu quelques heures pour me remettre sur MagicLight ce début de semaine, mais voici quelques changements.

Interface redessinée, avec cette fois la zone réservée pour la future minimap sur le parchemin
Introduction de la font du jeu.

Au dessus des portes se dessine les combaisons des recepteurs servant à l'ouvrir quand ceux-ci sont actifs (cela disparait quand le recepteur correspondant est désactivé).



Ainsi par exemple la porte Nord a pour combinaison ROUGE+VERT (et c'est tout donc elle est ouverte car les récepteurs sont tous deux actifs).
Par contre pour la porte Ouest, BLEU est une partie de la combinaison, (mais il en manque d'autre(s) donc la porte reste fermée).
Pour la porte Sud, aucun des récepteurs actifs n'intervient dans la combinaison pour ouvrir cette porte.

J'ai oublié de préciser, les récepteurs actifs s'entourent de blanc

Je profite pour nommer cette version officiellement v0.1 Beta

A plus

Sly

Ajouté le 28/11/2021 à 21:38 :
Ca progresse tout gentiment ...

La minimap est à son début (bas du parchemin). Ca fonctionne, mais je vais essayer de faire un truc un peu plus esthetique. La c'est la version bourrin



Désormais je vais devoir travailler sur un éditeur de niveaux car faire chaque niveau à la main, c'est la galère absolue.
+ quelques petites optimisation dans les graphismes
+ implémentation du score.

Mais le cœur du jeu fonctionne bien.

Suite au prochain épisode.

Ciao

Sly
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Thebigbadboy Hors ligne Maître du Puzzle Points: 455 Défis: 16 Message

Citer : Posté le 29/11/2021 17:22 | #


Je rejoins LephenixNoir sur le fait que ce projet nous en jette plein les yeux

Même si je n'ai pas de Graph 90, je me réjouis de voir la suite !

Courage
Un problème sans solution est un problème mal posé — Albert Einstein
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 29/11/2021 18:04 | #


Super beau, impressionnant !
Niveau gameplay, j'ai peut être raté un point, mais comment faire pour qu'il ne suffise pas de juste déplacer à tâton la lampe ?
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 29/11/2021 18:22 | #


Merci Thebigbadboy etNinestars,

Ninestars a écrit :
Super beau, impressionnant !
Niveau gameplay, j'ai peut être raté un point, mais comment faire pour qu'il ne suffise pas de juste déplacer à tâton la lampe ?


En fait, il faudra trouver la bonne combinaison des positions de la lampe, mais aussi des blocs pour permettre l'ouverture de telle ou telle porte.

Ici les niveaux sont relativement simples et il peut y avoir diverses positions qui fonctionnent, mais une fois le jeu terminé, il y aura des niveaux où il faudra bien réfléchir pour trouver la bonne position pour chacun des éléments (je vais aussi très certainement implémenter quelques obstacles histoire de corser encore un peu plus).

On peu aussi ruser pour mettre cote à cote des récepteurs avec des couleurs différentes, forçant le joueur à forcement trouver les bons blocs à mettre au bon endroit. Il faut savoir que chaque récepteur n'est activable que par sa propre couleur, si le capteur vert est illuminé par de la lumière jaune par exemple, il n'est pas actif.

Il y a moyen de ne pas juste déplacer la lampe, soit rassuré Ca serait beaucoup trop simple.

Ajouté le 29/11/2021 à 20:52 :
Une nouvelle fonction vient d'être implémentée afin de corser un peu le gameplay : les blocs non mobiles et qui bloquent la lumière :


On voit sur la capture d'écran divers blocs décoratifs sur la partie gauche de l'écran et dont la fonction est d'empêcher le mouvement ou le positionnement de la lumière des blocs transparents et de bloquer le passage de toute lumière.

Vous pouvez aussi voir désormais les coffres bonus qui contiendront divers trésors ou diverses aides.

Ciao

Sly
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 29/11/2021 20:58 | #


Excellent ! Je suis en train de penser que c'est un chouille dur à lire par moments, est-ce que tu as envisagé de garder des bitmaps légers pour chaque couleur pour t'assurer que tu ne fais pas ton blending RGBA 2 fois pour la même couleur et le même pixel ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 29/11/2021 21:38 | #


Lephenixnoir a écrit :
Excellent ! Je suis en train de penser que c'est un chouille dur à lire par moments, est-ce que tu as envisagé de garder des bitmaps légers pour chaque couleur pour t'assurer que tu ne fais pas ton blending RGBA 2 fois pour la même couleur et le même pixel ?


En fait le niveau est un niveau de test donc j'ai tout mis dedans pour tester le moteur, mais c'est vrai qu'il devient un peu illisible. Le jeu final sera moins cafouillis. En fait, la seule utilisation du canal alpha vient des rayons lumineux, projetés (via raycasting), le reste n'utilise pas d'alpha du tout mais des dimage / dsubimage.

Ajouté le 02/12/2021 à 22:02 :
Le projet avance bien, plein de choses ont évoluées ces derniers temps :
- jusqu'à présent j'étais sur une version vraiment "proto" du moteur où tout était en allocation statique avec des #define dans tous les sens, désormais on passe en allocation dynamique et les niveaux pourront contenir pas mal de trucs variés et être vraiment très différents les uns des autres.
- J'ai implémenté des obstacles aux déplacements du joueur, de la lumière et des blocs de teinte selon 2 types :
# ceux qui bloquent la lumière (Opaques) qui donc peuvent servir à cacher une zone
# ceux qui ne bloquent pas la lumière (par exemple zone d'eau au sol) qui sont juste présent pour limiter/complexifier les puzzles
- La taille de la carte peut changer (avant forcément 13x11 cellules), pour faire des couloirs, des salles carrées/rectangles, en long/en large ...
- Visuellement la source de lumière "clignotte", enfin le terme exact serait "oscille en luminosité", afin d'animer un peu le tableau.
- Les coffres bonus sont affichés mais ne sont pas encore actifs, ce sera pour la prochaine version.
- Les murs peuvent avoir diverses teintes (on la change avec le niveau).





Il reste deux ou trois petit trucs à mettre en place, mais a priori le plus complexe est derrière moi... sauf faire un éditeur de niveaux "propre", car c'est maintenant un autre gros chantier à lancer.

Stay tuned

Ciao

Sly
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Massena Hors ligne Ancien rédacteur Points: 2219 Défis: 11 Message

Citer : Posté le 03/12/2021 07:17 | #


Ça avance bien tout ça !
J'espère que tu as de bonnes idées pour design tes niveaux, ça s'annonce complexe

Pour le level design tu peux utiliser Tiled d'ailleurs, c'est un outil gratuit et open-source qui est un des (le ?) meilleur outil dans le domaine.

J'ai un peu peur que sur calto le jaune et le vert soient confus pour moi à cause de mon daltonisme, je te redis ça dès que je l'aurai testé.
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 03/12/2021 07:44 | #


Massena a écrit :
Ça avance bien tout ça !
J'espère que tu as de bonnes idées pour design tes niveaux, ça s'annonce complexe


J'ai en effet quelques idées, mais un des but est d'ouvrir le moteur de jeu à d'autres contributeurs par la suite, c'est toujours sympa de créer une communauté.

Massena a écrit :
Pour le level design tu peux utiliser Tiled d'ailleurs, c'est un outil gratuit et open-source qui est un des (le ?) meilleur outil dans le domaine.


Je connaissais pas, merci. Je vais regarder le logiciel pour voir si je peux l'utiliser comme base et greffer mes spécificités dessus.

Massena a écrit :
J'ai un peu peur que sur calto le jaune et le vert soient confus pour moi à cause de mon daltonisme, je te redis ça dès que je l'aurai testé.


En fait sur calto, je n'ai pas de problème entre le vert et le jaune, mais c'est plutôt entre le blanc et le jaune pour les indicateurs au dessus des portes. Par contre effectivement, si tu as un daltonisme, cela risque d'être un peu dur pour toi. Donne moi ton retour, je pourrais implémenter une fonction d'aide spécifique.

A plus et merci pour ton retour Massena.

Ciao

Sly

Ajouté le 04/12/2021 à 17:52 :
Faut bien travailler un peu aussi sur l'interface, pour faire que le jeu sois un minimum sympa à utiliser ...





Et voici à priori à quoi ressemblera le "level 0", point de départ du jeu, niveau ultra facile



A plus

Sly

Ajouté le 09/12/2021 à 10:32 :
Lephé,

Pendant que tu nous concoctes une API d'interaction avec les entrées/sorties dans un fichier, je code l'éditeur de niveaux pour Magic Light :



Dès que tu as un fscanf ou un truc pour lire de manière "structurée" un char/int, je prends pour tester.
Ca va me servir ...

Ciao

Sly
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 09/12/2021 13:38 | #


T'es pas obligé d'attendre jusque-là, tu peux toujours charger le fichier en RAM et utiliser strtol() et compagnie qui sont déjà codés.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 09/12/2021 13:54 | #


Oui c'est vrai, mais pour être honnête comme je commence à faire le portage sur Nspire, si je pouvais avoir un truc le plus commun possible pour gérer les fichiers ce serait cool

J'avoue que c'est la fainéantise qui parle
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 09/12/2021 15:47 | #


Ah oui c'est vrai que tu programmes aussi sur Nspire en même temps ! T'as bien raison d'être exigeant le standard doit être disponible. Il y aura juste un petit poil de délai

Sinon bonne nouvelle pour le debuggage je pense, en même temps que je finalise l'API Unix je suis en train de regarder quoi faire avec stdin/stdout/stderr et je me débrouillerai dans tous les cas pour qu'on puisse coder un pseudo-terminal et faire afficher les printf() à l'écran. Donc tu auras cette option-là aussi
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Kirafi Hors ligne Membre Points: 2180 Défis: 10 Message

Citer : Posté le 09/12/2021 16:23 | #


Salut, je trouve que ce projet est excellent, est-ce une adaptation d'un concept de jeu existant, où alors est-ce une idée originale de toi @Slyvtt ?

Y'a clairement un truc à faire ! Pousse le jusqu'au bout
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 09/12/2021 18:19 | #


Kirafi a écrit :
Salut, je trouve que ce projet est excellent, est-ce une adaptation d'un concept de jeu existant, où alors est-ce une idée originale de toi @Slyvtt ?

Y'a clairement un truc à faire ! Pousse le jusqu'au bout


Merci, ça fait plaisir de voir que le concept plait.

En fait c'est une idée originale que j'ai eu lorsque le concours "Glacial" est tombé, mais hélas j'avais vraiment pas de temps pour faire un programme dans le délai imparti, j'ai donc juste fait un mini concept game rapidos (disons la v0.05 pour voir ce que ça pouvait donner)

L'idée vient de ce que l'on peut faire avec de la glace (concept du concours à la base, être dans le thème glacial), et je me suis rappelé d'un reportage vu il y a pas trop longtemps à la TV où des plongeurs nageaient sous la banquise et la lumière était bleutée car une partie du spectre était absorbé par la couche de glace. Banco !! voici l'idée de base à développer.

Critor, sur TI-Planète, ma deuxième crèmerie :D, émet l'hypothèse que le donjon vient des concours Alrys et SynchoDonjon, mais je n'ai pas poussé mon introspection aussi loin, disons que c'est la première chose qui m'est venu en tête pour le lieu du jeu

Ajouté le 09/12/2021 à 18:42 :
Lephenixnoir a écrit :
Ah oui c'est vrai que tu programmes aussi sur Nspire en même temps ! T'as bien raison d'être exigeant le standard doit être disponible. Il y aura juste un petit poil de délai


C'est vrai que l'implémentation la plus proche possible du standard est important. Par exemple, si tu jettes un oeil là :
https://tiplanet.org/forum/viewtopic.php?f=20&t=24630&start=40
et là :
https://tiplanet.org/forum/viewtopic.php?f=20&t=25060

tu peux voir que le fait d'avoir sur la nSpire à la fois la STL et la lib graphique SDL permet au prix d'un effort minimal de créer des choses très proches sur deux architectures très différentes (nSpire et PC) avec le même code. Ici dans ce cas seuls trois parties sont hardware dépendant (gestion souris & clavier + rendu graphique de base pour avoir une version sans SDL), tout le reste du code est commun.

Lephenixnoir a écrit :
Sinon bonne nouvelle pour le debuggage je pense, en même temps que je finalise l'API Unix je suis en train de regarder quoi faire avec stdin/stdout/stderr et je me débrouillerai dans tous les cas pour qu'on puisse coder un pseudo-terminal et faire afficher les printf() à l'écran. Donc tu auras cette option-là aussi


Ca c'est cool aussi, si on peut avoir un combo de touche pour switcher l'affichage en live entre l'écran "normal" et un affichage de la sortie, ca c'est le rêve (du genre un ALPHA+SHIFT+F1 à F6, un peu à la méthode linux )
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 09/12/2021 18:58 | #


Aha oui le fameux toolkit graphique ! C'est une très belle affaire. En effet utiliser des APIs standardisées est vraiment important pour la portabilité. On a un peu de retard de ce côté-là c'est sûr, mais j'ai l'intention de pousser dans cette direction. On peut vite faire des choses pétées

Ca c'est cool aussi, si on peut avoir un combo de touche pour switcher l'affichage en live entre l'écran "normal" et un affichage de la sortie, ca c'est le rêve (du genre un ALPHA+SHIFT+F1 à F6, un peu à la méthode linux )

Ça ce sera à l'add-in de gérer - en gros gint, en tant que noyau, te permettra juste de réouvrir stdin/stdout/stderr avec dup2() (ou freopen()) et d'exécuter le code de ton souhait chaque fois que des données arrivent dans stdout/stderr.

Ensuite, tu peux brancher dessus un affichage à l'écran par-dessus ton jeu, ou un écran indépendant, ou logger dans un fichier, à loisir. Implémenter une petite lib avec un shell qui "prend le contrôle" de l'écran quand un message est envoyé serait possible, mais dans une boucle de jeu sans coopération de la part de l'add-in cet écran se ferait effacer après un frame, ce qui est clairement pas idéal. Je ne crois pas qu'il y ait de comportement par défaut vraiment bon pour tout le monde, donc je préfère m'en tenir à vous laisser fournir la méthode d'affichage.

En tous cas gint fournit déjà quelques fonctions pour qu'afficher du texte multiligne à l'écran se passe bien, donc ça sera jamais trop loin.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Gladosse Hors ligne Membre Points: 229 Défis: 2 Message

Citer : Posté le 09/12/2021 21:26 | #


Ou est-ce que je peux trouver l'add-in pour le tester?
FlamingKite Hors ligne Membre Points: 516 Défis: 9 Message

Citer : Posté le 09/12/2021 21:29 | #


En fichier joint du post
Lephenixnoir En ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 09/12/2021 21:30 | #


Ou sur la page du programme (je ne sais pas lequel est le plus à jour).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 09/12/2021 22:35 | #


Lephenixnoir a écrit :
Ou sur la page du programme (je ne sais pas lequel est le plus à jour).

C’est dans les téléchargements le plus a jour


Ajouté le 10/12/2021 à 07:49 :
Lephenixnoir a écrit :
Aha oui le fameux toolkit graphique ! C'est une très belle affaire. En effet utiliser des APIs standardisées est vraiment important pour la portabilité. On a un peu de retard de ce côté-là c'est sûr, mais j'ai l'intention de pousser dans cette direction. On peut vite faire des choses pétées


Ce que je peux te proposer, c'est de lancer un appel à contribution(s), peut être essayer dans un premier temps de lister ce qu'on aimerait avoir de disponible comme librairies/fonctions, puis prioriser cette liste (car certaines briques de base seront à développer avant les briques de plus haut niveau).
Chacun pouvant ensuite essayer d'aider pour participer à l'effort. Je pense qu'il faudrait un superviseur pour checker que tout s'imbrique bien / soit cohérent (on va pas se mentir, se serait toi ;E )

Perso, je voudrais bien aider, mais je sais pas forcément quoi faire en fonction de mes compétences (par exemple en gestion hardware je suis une bille). Mais il y a certainement des items que je pourrais gérer/prendre à ma charge.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 79 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd