Ada Looks Good, Now Program a Game Without Knowing Anything
Hild, Stefan
In 2020 I started live streaming the development of a turn-based strategy game. At that time I had little idea about Ada, programming or game development (nothing has changed about that to this day). But by September 2020 it had taken the early form of a Civilization clone. After more than a year of development, it has become almost a real game with its own features. And now I'm going to talk a little bit about some experiences and weirdnesses with game development in Ada.
 you Hello, I'm Stefan Hild and I discovered Ada around three years ago and started to teach it myself using this tutorial from Fikibooks. I clearly recommend it. In my opinion, it's the best online tutorial out there or the best I had found and also use the Rosetta code and can you give good solutions for small tasks you maybe need and because you want to learn a programming language you have to grab something. I directly start to program and role-playing game because if you don't know much about a language and don't know much about game no-learning you start of course programming a game. Yeah, it's this was good. Exactly look like this and but it compiled. Yeah, don't talk your game. Okay, don't talk about this. Don't ask questions. I can't answer them probably and later in 2020 I started to program a new game and turn-based game at first that later became a civilization clone civilization like game first as a console with to make the background systems and recently I started to switch to the SML. It looks not so much different but I'm working with it and I hope I can sell it in one day hopefully. Yeah, and I also stream the whole development of this game on my YouTube channel. Oh boy, made much and also on Twitch and no one is forcing me to say that I'm streaming it. No one. No, don't worry. No one is asking, forcing me and now I want to talk about some advices and few things I discovered while programming a game without knowing too much about Ada and game with mostly about Ada. And we begin with some basic things. At first, don't make a spark game. I tried it at first, but I give up at some point because you change often things and then you have rewrite all the contracts that spark want. Also, you probably need for game features that spark don't have like random numbers or I know spark don't like random numbers and give my game big part of spark wouldn't be a feature I hope I can put in later in the future version, but at the moment it's for me it's more important to make a simple game in Ada than a game in spark. But what I would advise is to go in your project settings warnings and put them all on except the body information here. Probably there's a news I don't have for it. But the thing is, sometimes the option will give you an annoying message and you have write a minute work a minute on your code to fix this message. It's annoying, but it's still better than don't have them on later discover you have a problem and you have to change big part of your code because you have to fix this error and now you don't need a minute. You need a minute and several days. Yeah, so I give you advice put him all on except if you want really fast make a game but then maybe Ada is the wrong language anyway. Also the validity checks you can make them all on and never a problem instead and some style checks you probably the nesting thing I know you can nest or nest many things in Ada packages and all the stuff but just because you can don't meet your should and it will become unreadable if you're nesting to keep so it would give you a limit. Also if you use not V8 not W8 as a command you can use some UTF-A symbols like I did in the console version with the pointer directly your code is a really nice thing and if you want to add libraries that you have here I searched again. Yes, it's dependencies and you have to add your library here don't put it directly in your project. I did it wrong at first because I don't know what I'm doing most of the time and yeah so this is some basic things that I think is a really good advice when you start also and now we switch over to some string handling that is really annoying Ada sometimes if you do it wrong if you don't know it and yeah. Yes string handling in Ada. Ada has many several types of strings and if you use version of Ada as a 2005 or newer then you have the normal version of the string the white version and the white version and most of them you can completely forget if you program a game and just can use unbounded white string because you don't have to worry how long your string is I mean it's of course not completely unbounded but it's long enough to store files from text or user input and also you don't have to worry if you change your text if you translate it if you rewrite it whatever you do is probably really often and also if you program a game or at least for a modern system a game for a modern system you don't have to worry about memory use I mean of course the white version use more memory than the white or normal version but it's just background noise on a game I mean the map of my game there's all the information about what is what saved it's it's most of the memory and it doesn't contain any strings and it's just not important so you can just use the white version and as a completely complete complete utf a into it so you don't have to worry about special characters if you translate it to another language like german and cendro sasa things like air and in a long case you probably need some strings why why strings we exactly know how long it is but this is not so often or at least yeah not that I use it so often because you have to worry about the length and it's really annoying if you have programming a game at least also you probably need the unbounded to unbounded by the string to avoid string because many things like the sml once and string another unbounded thing to give it through and yeah you have to convert it and also this probably needs some calculating power but it's also not important for a modern game and also you should use white white character if you use characters for some reason for example to see because you can directly use the complete utf a and it's really really good um sometimes you will need other strings and this is the point where you get really annoyed for example if you use the directories because this is reduced into a 2005 if I correctly informed and it only has strings and then you have to convert your string to an unbounded white string or something to work with your internal structure and it's really annoying transform strings and then it doesn't have um special characters like and and you have to read me a file it's it's really annoying so acceptances only use white white string and mostly unbounded because whatever you think you can save in memory with smaller strings it's not important in game it's just annoying to transform your string so it can hold the correct characters and yeah don't make your life worth just use unbounded white white string and convert it all you need it it's the easiest way I think good now we had some string handling so let us do more string handling um yeah you will have many strings to handle um this time the image command or the white white image version of it the white white version of the image command um probably needs this if you have some numbers and want to print them out as text on your game I'm not sure if you can read this I can make it I can make it bigger but don't don't don't do that you got um and yeah um you have to know several things about that uh at first it's important to know if this thing is positive or bigger equal zero it will get an empty space before head and if it's smaller it's then you get your minus um so you have to trim your string white will kill your formation of the text in your game and the second thing is if you um do it with float using it with float you get um version of it like instead of 1.00 you probably want like 1.00 move points you instead get normally um the scientific version of it and it's it's important and yes this is probably not the way you want to show your um moving points so you can convert it um but bring some to some weirdness of the library at first um you have an white white textio version and then white white integer textio version but the float white white version is a Gnat internal unit so you have to make your own package right from white white textio or you can use float textio but this is only for um normal strings so you don't want to use it and also um you have to Gnat and yes then you can use your put to change it and can say hey i want it like said what a little bit problematic if you start programming because it first thing yeah put i use it um but put print something on the console i think it's set put i'm not sure because there's no comment and actually there's an x put or also this is not the correct put no no this put um if this put you can convert your um float text into um normal number text also from this to this and it's a little bit complicated if you're beginning programming because someone say yeah just use put but put print on console and then you scroll down and find out oh there are more puts without any comment and yes it's done a library law to do this like you have 8 000 procedures called put in 300 files and it's sometimes confusing so if you read hey use put for that um and it doesn't work use probably the wrong put although it's a procedure of course because a function wouldn't be yeah give information in and get one information out yeah you don't use function for that um also no comment and as i know aida can have up to 200 characters for procedures and variables and all the stuff and yeah they named it all put also they named many things get um yes it's it's sometimes really confusing and i give you advice i know you can do this in aida like name anything the same if you and also the um name of the parameter you get in as long as the tip is different aida accepts this but you should not do this in your program it gets confusing especially if you don't work for a longer longer time with this part of your code and then you have yeah many procedures with the same name or nearly the same input parameter names and don't do this it's you will hate yourself believe me um i of course i've never done this but i heard of people yeah so it's a little bit confusing i thought this was important to mention because i need a wider figure out which put also many things and yeah so don't or at least if you do it comment it so you can understand it later it's problematic science so um not completely string handling string handling but a little bit yeah you handle many strings in games um input output um aida has many many different things at least four different types for reading and writing data um for game probably is two important things text i o and stream i o text i o i o of course for text and only for text um for example you can read text you want to play in your game and different language and all this stuff and for anything else you should probably use stream i o at first i try to put my database in some text file or simply to editing file using other methods and as i'm really too dumb to do it or it just isn't just is so complicated but i had a really big problem so at some points i was so annoyed i changed to stream my old to just write it there and write later an editor for my databases i have still to do this um because it's really annoying to not do it so if you don't have only text or something as you probably use stream i o you will have this for your unit database or something and yeah also if you read your text of course only read it into an unbounded white light string and yeah don't work around like yeah but i can save 20 kilobytes if i use this crazy method to read my data and write it um it's it's it's it's still not important in modern game and it's yeah you will not save memory with it probably not no it's many other things in your game will eat up some in memory and that this is no longer not important yes this was my talk about my experience and some advice about adan and gamemeth um originally playing to put more things into it like why it's important to make games with adan and things about this tasks system and so on but it took me longer to talk about this stuff than i thought so maybe you can ask me the kune or maybe i make a video on my channel later could do this and yes i also want again to um say that i stream all my stuff programming stuff on youtube damn so much streams and on twitch and i'm still not forced to say that i stream all this stuff no no one is forcing me no don't worry and yeah so have fun and bye well we should be now live so thank you for your presentation stefan and now we get to the q&a but before we get to the questions from the public i have a personal one and that is how did you learn about data how did you find out do you have any previous experience in other programming um and why did you decide to do a game uh with with data that's that's an interesting story uh i'm not sure discover adan i just found it some day and looked at it and i liked it and start working with it but i try to make a game with other language before like c c plus plus or engines like unity but i really don't like the c syntax and also the compile and this language is not really helpful with his messages they are long but meaningless for me um so i never found the right way to work with this language but so it is current adan and i just started crying it out like some other language and yeah somehow it sticks okay very interesting and how long have you known about data or worked with it since the first time it's three years ago but i probably start working more with it around two years ago for some time problems and stuff okay so we have a comment from stefan carrez who says yes the strings are annoying in adan compared to some other languages um i thank you for covering that topic um because a lot of people don't really know that much about the strings or are unaware of the complexities of data and especially for showing the example where a user can just name a city or something and they can just provide any symbol or or issue was that a major issue with the language that you had to fight through or at the beginning was the beginning was a problem because many tutorials just cover the normal string or normal asky signs and you have to figure a bit out for yourself especially if many things have all the same name in the standard library like the 5000 puts you have in there and but after a while you get it and if you yeah be consequent with using of wide wide strings then it most time works okay and i never see are using a library for for the game um how did you discover that library nowadays we have this package model here um known as alir that manages dependencies and finds out different projects in the internet are there are indexed how do you find the the i believe sml asml yes yes i've been first searched for the for some libraries like the stl or sml and then you can just go under bindings and then there's a list of bindings and one of them was the asml and because it was active maintenance i chose this i know there wasn't binding for a legal for but links seems that and i'm not sure the state of the stl binding so i chose this one oh okay okay thank you and what uh so you showed two versions the terminal version and then the graphical version um so i i suppose that's when you start using the sfml library to do that transition um however for the terminal version uh where are you using just the standard strings and string manipulation tools that eta provides to draw things on the terminal uh yes this standard thing and some csi um this extended terminal commands this is why it doesn't work correctly in windows because it's disabled standard i think but looking good graphically wasn't the main purpose at the beginning because i just wanted to integrate the um background systems and all and it's probably easier if i don't directly start with another big library like the asml and see if this is work so we are nearing the end of the qna um i would encourage all the speakers to come to the room the bot will publish the address it may take a few seconds it seems that it has a bit of a delay so be patient please um and you can come here to this room and have a direct conversation with sephan if you want so thank you sephan for your efforts and see you
 you  Hello, I'm Stefan Hild and I discovered Ada around three years ago and started to teach it myself  using this tutorial from Fikibooks. I clearly recommend it. In my opinion, it's the best online  tutorial out there or the best I had found and also use the Rosetta code and can you give good  solutions for small tasks you maybe need and because you want to learn a programming language  you have to grab something. I directly start to program and role-playing game because if you  don't know much about a language and don't know much about game no-learning you start of course  programming a game. Yeah, it's this was good. Exactly look like this and but it compiled. Yeah,  don't talk your game. Okay, don't talk about this. Don't ask questions. I can't answer them  probably and later in 2020 I started to program a new game and turn-based game at first that later  became a civilization clone civilization like game first as a console with to make the background  systems and recently I started to switch to the SML. It looks not so much different but I'm working  with it and I hope I can sell it in one day hopefully. Yeah, and I also stream the whole  development of this game on my YouTube channel. Oh boy, made much and also on Twitch and no one  is forcing me to say that I'm streaming it. No one. No, don't worry. No one is asking,  forcing me and now I want to talk about some advices and few things I discovered while programming  a game without knowing too much about Ada and game with mostly about Ada. And we begin with  some basic things. At first, don't make a spark game. I tried it at first, but I give up at some  point because you change often things and then you have rewrite all the contracts that spark  want. Also, you probably need for game features that spark don't have like random numbers or I know  spark don't like random numbers and give my game big part of spark wouldn't be a feature I hope I  can put in later in the future version, but at the moment it's for me it's more important to make  a simple game in Ada than a game in spark. But what I would advise is to go in your project  settings warnings and put them all on except the body information here. Probably there's  a news I don't have for it. But the thing is, sometimes the option will give you an annoying  message and you have write a minute work a minute on your code to fix this message. It's annoying,  but it's still better than don't have them on later discover you have a problem and you have to  change big part of your code because you have to fix this error and now you don't need a minute.  You need a minute and several days. Yeah, so I give you advice put him all on except if you want  really fast make a game but then maybe Ada is the wrong language anyway. Also the validity checks  you can make them all on and never a problem instead and some style checks you probably the  nesting thing I know you can nest or nest many things in Ada packages and all the stuff but  just because you can don't meet your should and it will become unreadable if you're nesting to  keep so it would give you a limit. Also if you use not V8 not W8 as a command you can use some  UTF-A symbols like I did in the console version with the pointer directly your code is a really  nice thing and if you want to add libraries that you have here I searched again. Yes,  it's dependencies and you have to add your library here don't put it directly in your project. I  did it wrong at first because I don't know what I'm doing most of the time and yeah so this is  some basic things that I think is a really good advice when you start also and now we switch  over to some string handling that is really annoying Ada sometimes if you do it wrong if you  don't know it and yeah. Yes string handling in Ada. Ada has many several types of strings and if  you use version of Ada as a 2005 or newer then you have the normal version of the string the  white version and the white version and most of them you can completely forget if you program a  game and just can use unbounded white string because you don't have to worry how long your  string is I mean it's of course not completely unbounded but it's long enough to store files  from text or user input and also you don't have to worry if you change your text if you translate  it if you rewrite it whatever you do is probably really often and also if you program a game or  at least for a modern system a game for a modern system you don't have to worry about memory use  I mean of course the white version use more memory than the white or normal version but  it's just background noise on a game I mean the map of my game there's all the information about  what is what saved it's it's most of the memory and it doesn't contain any strings and it's just  not important so you can just use the white version and as a completely complete complete  utf a into it so you don't have to worry about special characters if you translate it to another  language like german and cendro sasa things like air and in a long case you probably need some  strings why why strings we exactly know how long it is but this is not so often or at least  yeah not that I use it so often because you have to worry about the length and it's really annoying  if you have programming a game at least also you probably need the unbounded to unbounded  by the string to avoid string because many things like the sml once and string another unbounded  thing to give it through and yeah you have to convert it and also this probably needs some  calculating power but it's also not important for a modern game and also you should use white  white character if you use characters for some reason for example to see because you can directly  use the complete utf a and it's really really good um sometimes you will need other strings  and this is the point where you get really annoyed for example if you use the directories because this  is reduced into a 2005 if I correctly informed and it only has strings and then you have to convert  your string to an unbounded white string or something to work with your internal structure and  it's really annoying transform strings and then it doesn't have um special characters like and  and you have to read me a file it's it's really annoying so acceptances only use white white  string and mostly unbounded because whatever you think you can save in memory with smaller strings  it's not important in game it's just annoying to transform your string so it can hold the  correct characters and yeah don't make your life worth just use unbounded white white string and  convert it all you need it it's the easiest way I think good now we had some string handling so  let us do more string handling um yeah you will have many strings to handle um this time the image  command or the white white image version of it the white white version of the image command um  probably needs this if you have some numbers and want to print them out as text on your game I'm  not sure if you can read this I can make it I can make it bigger but don't don't don't do that you got um and yeah um you have to know several  things about that uh at first it's important to know if this thing is positive or bigger equal zero it will  get an empty space before head and if it's smaller it's then you get your minus um so you have to trim  your string white will kill your formation of the text in your game and the second thing is if you um  do it with float using it with float you get um version of it like instead of 1.00 you probably  want like 1.00 move points you instead get normally um the scientific version of it and  it's it's important and yes this is probably not the way you want to show your um moving points  so you can convert it um but bring some to some weirdness of the library at first um  you have an white white textio version and then white white integer textio version but  the float white white version is a Gnat internal unit so you have to make your own package  right from white white textio or you can use float textio but this is only for um normal strings so you  don't want to use it and also um you have to Gnat and yes then you can use your put to change it and  can say hey i want it like said what a little bit problematic if you start programming because it  first thing yeah put i use it um but put print something on the console i think it's set put  i'm not sure because there's no comment and actually there's an x put or also this is not the  correct put no no this put um if this put you can convert your um float text into um normal number  text also from this to this and it's a little bit complicated if you're beginning programming  because someone say yeah just use put but put print on console and then you scroll down and find out  oh there are more puts without any comment and yes it's done a library law to do this like you have  8 000 procedures called put in 300 files and it's sometimes confusing so if you read hey use put for  that um and it doesn't work use probably the wrong put although it's a procedure of course  because a function wouldn't be yeah give information in and get one information out  yeah you don't use function for that um also no comment and as i know aida can have up to 200  characters for procedures and variables and all the stuff and yeah they named it all put  also they named many things get um yes it's it's sometimes really confusing and i give you advice  i know you can do this in aida like name anything the same if you and also the um  name of the parameter you get in as long as the tip is different aida accepts this but you  should not do this in your program it gets confusing especially if you don't work for  a longer longer time with this part of your code and then you have yeah many procedures with the  same name or nearly the same input parameter names and don't do this it's you will hate yourself  believe me um i of course i've never done this but i heard of people yeah so it's a little bit  confusing i thought this was important to mention because i need a wider figure out which put  also many things and yeah so don't or at least if you do it comment it so you can understand it later  it's problematic science so um not completely string handling string handling but a little bit  yeah you handle many strings in games um input output um aida has many  many different things at least four different types for reading and writing data um for game  probably is two important things text i o and stream i o text i o i o of course for text and  only for text um for example you can read text you want to play in your game and different language  and all this stuff and for anything else you should probably use stream i o at first i try to put  my database in some text file or simply to editing file using other methods and as i'm really too  dumb to do it or it just isn't just is so complicated but i had a really big problem so at  some points i was so annoyed i changed to stream my old to just write it there and write later  an editor for my databases i have still to do this um because it's really annoying to not do  it so if you don't have only text or something as you probably use stream i o you will have this  for your unit database or something and yeah also if you read your text of course only  read it into an unbounded white light string  and yeah don't work around like yeah but i can save 20 kilobytes if i use this crazy  method to read my data and write it um it's it's it's it's still not important in modern game and  it's yeah you will not save memory with it probably not no it's many other things in your game will  eat up some in memory and that this is no longer not important yes this was my talk about my experience  and some advice about adan and gamemeth um originally playing to put more things into it like  why it's important to make games with adan and things about this tasks system and so on but  it took me longer to talk about this stuff than i thought so maybe you can ask me the kune or  maybe i make a video on my channel later could do this and yes i also want again to  um say that i stream all my stuff programming stuff on youtube damn so much streams and on  twitch and i'm still not forced to say that i stream all this stuff no no one is forcing me  no don't worry and yeah so have fun and bye  well we should be now live so thank you for your presentation stefan and now we get to the q&a  but before we get to the questions from the public i have a personal one and that is how  did you learn about data how did you find out do you have any previous experience in other  programming um and why did you decide to do a game uh with with data that's that's an interesting  story uh i'm not sure discover adan i just found it some day and looked at it and i liked it and  start working with it but i try to make a game with other language before like c c plus plus  or engines like unity but i really don't like the c syntax and also the compile and this language  is not really helpful with his messages they are long but meaningless for me um so i never  found the right way to work with this language but so it is current adan and i just started  crying it out like some other language and yeah somehow it sticks okay very interesting and how  long have you known about data or worked with it since the first time it's three years ago  but i probably start working more with it around two years ago  for some time problems and stuff okay so we have a comment from stefan carrez  who says yes the strings are annoying in adan compared to some other languages um i thank you  for covering that topic um because a lot of people don't really know that much about the  strings or are unaware of the complexities of data and especially for showing the example where a  user can just name a city or something and they can just provide any symbol or or issue  was that a major issue with the language that you had to fight through or at the beginning  was the beginning was a problem because many tutorials just cover the normal string or normal  asky signs and you have to figure a bit out for yourself especially if many things have  all the same name in the standard library like the 5000 puts you have in there and but after a while  you get it and if you yeah be consequent with using of wide wide strings then it most time works  okay and i never see are using a library for for the game um how did you discover that library  nowadays we have this package model here um known as alir that manages dependencies and  finds out different projects in the internet are there are indexed how do you find the the i believe  sml asml yes yes i've been first searched for the for some libraries like the stl or sml  and then you can just go under bindings and then there's a list of bindings and one of them was  the asml and because it was active maintenance i chose this i know there wasn't binding for  a legal for but links seems that and i'm not sure the state of the stl binding so i chose this one  oh okay okay thank you and  what uh so you showed two versions the terminal version and then the graphical version  um so i i suppose that's when you start using the sfml library to do that transition  um however for the terminal version uh where are you using just the standard strings and  string manipulation tools that eta provides to draw things on the terminal  uh yes this standard thing and some csi um this extended terminal commands this is why it doesn't  work correctly in windows because it's disabled standard i think but looking good graphically  wasn't the main purpose at the beginning because i just wanted to integrate the um background systems  and all and it's probably easier if i don't directly start with another big library like the asml  and see if this is work so we are nearing the end of the qna um i would encourage all the  speakers to come to the room the bot will publish the address it may take a few seconds it seems  that it has a bit of a delay so be patient please um and you can come here to this room and have a  direct conversation with sephan if you want so thank you sephan for your efforts and see you
ada_looks_good_game_0_3155.png ada_looks_good_game_3156_3743.png ada_looks_good_game_3744_4595.png ada_looks_good_game_4596_7331.png ada_looks_good_game_7332_8063.png ada_looks_good_game_8064_8315.png ada_looks_good_game_8316_11015.png ada_looks_good_game_11016_11207.png ada_looks_good_game_11208_13319.png ada_looks_good_game_13320_13607.png ada_looks_good_game_13608_15683.png ada_looks_good_game_15684_23963.png ada_looks_good_game_23964_24023.png ada_looks_good_game_24024_24107.png ada_looks_good_game_24108_27539.png ada_looks_good_game_27540_28427.png ada_looks_good_game_28428_29111.png ada_looks_good_game_29112_30443.png ada_looks_good_game_30444_30575.png ada_looks_good_game_30576_30839.png ada_looks_good_game_30840_30971.png ada_looks_good_game_30972_32807.png ada_looks_good_game_32808_33491.png ada_looks_good_game_33492_34427.png ada_looks_good_game_34428_34739.png ada_looks_good_game_34740_35219.png ada_looks_good_game_35220_36647.png ada_looks_good_game_36648_36731.png ada_looks_good_game_36732_36849.png
you Hello, I'm Stefan Hild and I discovered Ada around three years ago and started to teach it myself using this tutorial from Fikibooks. I clearly recommend it. In my opinion, it's the best online tutorial out there or the best I had found and also use the Rosetta code and can you give good solutions for small tasks you maybe need and because you want to learn a programming language you have to grab something. I directly start to program and role-playing game because if you don't know much about a language and don't know much about game no-learning you start of course programming a game. Yeah, it's this was good. Exactly look like this and but it compiled. Yeah, don't talk your game. Okay, don't talk about this. Don't ask questions. I can't answer them probably and later in 2020 I started to program a new game and turn-based game at first that later became a civilization clone civilization like game first as a console with to make the background systems and recently I started to switch to the SML. It looks not so much different but I'm working with it and I hope I can sell it in one day hopefully. Yeah, and I also stream the whole development of this game on my YouTube channel. Oh boy, made much and also on Twitch and no one is forcing me to say that I'm streaming it. No one. No, don't worry. No one is asking, forcing me and now I want to talk about some advices and few things I discovered while programming a game without knowing too much about Ada and game with mostly about Ada. And we begin with some basic things. At first, don't make a spark game. I tried it at first, but I give up at some point because you change often things and then you have rewrite all the contracts that spark want. Also, you probably need for game features that spark don't have like random numbers or I know spark don't like random numbers and give my game big part of spark wouldn't be a feature I hope I can put in later in the future version, but at the moment it's for me it's more important to make a simple game in Ada than a game in spark. But what I would advise is to go in your project settings warnings and put them all on except the body information here. Probably there's a news I don't have for it. But the thing is, sometimes the option will give you an annoying message and you have write a minute work a minute on your code to fix this message. It's annoying, but it's still better than don't have them on later discover you have a problem and you have to change big part of your code because you have to fix this error and now you don't need a minute. You need a minute and several days. Yeah, so I give you advice put him all on except if you want really fast make a game but then maybe Ada is the wrong language anyway. Also the validity checks you can make them all on and never a problem instead and some style checks you probably the nesting thing I know you can nest or nest many things in Ada packages and all the stuff but just because you can don't meet your should and it will become unreadable if you're nesting to keep so it would give you a limit. Also if you use not V8 not W8 as a command you can use some UTF-A symbols like I did in the console version with the pointer directly your code is a really nice thing and if you want to add libraries that you have here I searched again. Yes, it's dependencies and you have to add your library here don't put it directly in your project. I did it wrong at first because I don't know what I'm doing most of the time and yeah so this is some basic things that I think is a really good advice when you start also and now we switch over to some string handling that is really annoying Ada sometimes if you do it wrong if you don't know it and yeah. Yes string handling in Ada. Ada has many several types of strings and if you use version of Ada as a 2005 or newer then you have the normal version of the string the white version and the white version and most of them you can completely forget if you program a game and just can use unbounded white string because you don't have to worry how long your string is I mean it's of course not completely unbounded but it's long enough to store files from text or user input and also you don't have to worry if you change your text if you translate it if you rewrite it whatever you do is probably really often and also if you program a game or at least for a modern system a game for a modern system you don't have to worry about memory use I mean of course the white version use more memory than the white or normal version but it's just background noise on a game I mean the map of my game there's all the information about what is what saved it's it's most of the memory and it doesn't contain any strings and it's just not important so you can just use the white version and as a completely complete complete utf a into it so you don't have to worry about special characters if you translate it to another language like german and cendro sasa things like air and in a long case you probably need some strings why why strings we exactly know how long it is but this is not so often or at least yeah not that I use it so often because you have to worry about the length and it's really annoying if you have programming a game at least also you probably need the unbounded to unbounded by the string to avoid string because many things like the sml once and string another unbounded thing to give it through and yeah you have to convert it and also this probably needs some calculating power but it's also not important for a modern game and also you should use white white character if you use characters for some reason for example to see because you can directly use the complete utf a and it's really really good um sometimes you will need other strings and this is the point where you get really annoyed for example if you use the directories because this is reduced into a 2005 if I correctly informed and it only has strings and then you have to convert your string to an unbounded white string or something to work with your internal structure and it's really annoying transform strings and then it doesn't have um special characters like and and you have to read me a file it's it's really annoying so acceptances only use white white string and mostly unbounded because whatever you think you can save in memory with smaller strings it's not important in game it's just annoying to transform your string so it can hold the correct characters and yeah don't make your life worth just use unbounded white white string and convert it all you need it it's the easiest way I think good now we had some string handling so let us do more string handling um yeah you will have many strings to handle um this time the image command or the white white image version of it the white white version of the image command um probably needs this if you have some numbers and want to print them out as text on your game I'm not sure if you can read this I can make it I can make it bigger but don't don't don't do that you got um and yeah um you have to know several things about that uh at first it's important to know if this thing is positive or bigger equal zero it will get an empty space before head and if it's smaller it's then you get your minus um so you have to trim your string white will kill your formation of the text in your game and the second thing is if you um do it with float using it with float you get um version of it like instead of 1.00 you probably want like 1.00 move points you instead get normally um the scientific version of it and it's it's important and yes this is probably not the way you want to show your um moving points so you can convert it um but bring some to some weirdness of the library at first um you have an white white textio version and then white white integer textio version but the float white white version is a Gnat internal unit so you have to make your own package right from white white textio or you can use float textio but this is only for um normal strings so you don't want to use it and also um you have to Gnat and yes then you can use your put to change it and can say hey i want it like said what a little bit problematic if you start programming because it first thing yeah put i use it um but put print something on the console i think it's set put i'm not sure because there's no comment and actually there's an x put or also this is not the correct put no no this put um if this put you can convert your um float text into um normal number text also from this to this and it's a little bit complicated if you're beginning programming because someone say yeah just use put but put print on console and then you scroll down and find out oh there are more puts without any comment and yes it's done a library law to do this like you have 8 000 procedures called put in 300 files and it's sometimes confusing so if you read hey use put for that um and it doesn't work use probably the wrong put although it's a procedure of course because a function wouldn't be yeah give information in and get one information out yeah you don't use function for that um also no comment and as i know aida can have up to 200 characters for procedures and variables and all the stuff and yeah they named it all put also they named many things get um yes it's it's sometimes really confusing and i give you advice i know you can do this in aida like name anything the same if you and also the um name of the parameter you get in as long as the tip is different aida accepts this but you should not do this in your program it gets confusing especially if you don't work for a longer longer time with this part of your code and then you have yeah many procedures with the same name or nearly the same input parameter names and don't do this it's you will hate yourself believe me um i of course i've never done this but i heard of people yeah so it's a little bit confusing i thought this was important to mention because i need a wider figure out which put also many things and yeah so don't or at least if you do it comment it so you can understand it later it's problematic science so um not completely string handling string handling but a little bit yeah you handle many strings in games um input output um aida has many many different things at least four different types for reading and writing data um for game probably is two important things text i o and stream i o text i o i o of course for text and only for text um for example you can read text you want to play in your game and different language and all this stuff and for anything else you should probably use stream i o at first i try to put my database in some text file or simply to editing file using other methods and as i'm really too dumb to do it or it just isn't just is so complicated but i had a really big problem so at some points i was so annoyed i changed to stream my old to just write it there and write later an editor for my databases i have still to do this um because it's really annoying to not do it so if you don't have only text or something as you probably use stream i o you will have this for your unit database or something and yeah also if you read your text of course only read it into an unbounded white light string and yeah don't work around like yeah but i can save 20 kilobytes if i use this crazy method to read my data and write it um it's it's it's it's still not important in modern game and it's yeah you will not save memory with it probably not no it's many other things in your game will eat up some in memory and that this is no longer not important yes this was my talk about my experience and some advice about adan and gamemeth um originally playing to put more things into it like why it's important to make games with adan and things about this tasks system and so on but it took me longer to talk about this stuff than i thought so maybe you can ask me the kune or maybe i make a video on my channel later could do this and yes i also want again to um say that i stream all my stuff programming stuff on youtube damn so much streams and on twitch and i'm still not forced to say that i stream all this stuff no no one is forcing me no don't worry and yeah so have fun and bye well we should be now live so thank you for your presentation stefan and now we get to the q&a but before we get to the questions from the public i have a personal one and that is how did you learn about data how did you find out do you have any previous experience in other programming um and why did you decide to do a game uh with with data that's that's an interesting story uh i'm not sure discover adan i just found it some day and looked at it and i liked it and start working with it but i try to make a game with other language before like c c plus plus or engines like unity but i really don't like the c syntax and also the compile and this language is not really helpful with his messages they are long but meaningless for me um so i never found the right way to work with this language but so it is current adan and i just started crying it out like some other language and yeah somehow it sticks okay very interesting and how long have you known about data or worked with it since the first time it's three years ago but i probably start working more with it around two years ago for some time problems and stuff okay so we have a comment from stefan carrez who says yes the strings are annoying in adan compared to some other languages um i thank you for covering that topic um because a lot of people don't really know that much about the strings or are unaware of the complexities of data and especially for showing the example where a user can just name a city or something and they can just provide any symbol or or issue was that a major issue with the language that you had to fight through or at the beginning was the beginning was a problem because many tutorials just cover the normal string or normal asky signs and you have to figure a bit out for yourself especially if many things have all the same name in the standard library like the 5000 puts you have in there and but after a while you get it and if you yeah be consequent with using of wide wide strings then it most time works okay and i never see are using a library for for the game um how did you discover that library nowadays we have this package model here um known as alir that manages dependencies and finds out different projects in the internet are there are indexed how do you find the the i believe sml asml yes yes i've been first searched for the for some libraries like the stl or sml and then you can just go under bindings and then there's a list of bindings and one of them was the asml and because it was active maintenance i chose this i know there wasn't binding for a legal for but links seems that and i'm not sure the state of the stl binding so i chose this one oh okay okay thank you and what uh so you showed two versions the terminal version and then the graphical version um so i i suppose that's when you start using the sfml library to do that transition um however for the terminal version uh where are you using just the standard strings and string manipulation tools that eta provides to draw things on the terminal uh yes this standard thing and some csi um this extended terminal commands this is why it doesn't work correctly in windows because it's disabled standard i think but looking good graphically wasn't the main purpose at the beginning because i just wanted to integrate the um background systems and all and it's probably easier if i don't directly start with another big library like the asml and see if this is work so we are nearing the end of the qna um i would encourage all the speakers to come to the room the bot will publish the address it may take a few seconds it seems that it has a bit of a delay so be patient please um and you can come here to this room and have a direct conversation with sephan if you want so thank you sephan for your efforts and see you
best online tutorial out there or the best I had them probably and later in 2020 I started to also stream the whole development of this game on asking, forcing me and now I want to talk about Ada and game with mostly about Ada. And we begin with some basic things. At first, don't make a important to make a simple game in Ada than a also from this to this and it's a little bit few seconds it seems that it has a bit of a delay