Opiniões

A opinião de cada um vale o que vale, mas é sempre interessante ouvir e ler algumas daquelas que vale a pena. Já tinha em tempos passado os olhos pelo portal goodreads.com onde podemos encontrar opiniões de pessoas que leram livros .

E foi neste portal que encontrei o livro “Sid Meier’s Memoir!: A Life in Computer Games” e que foi escrito pelo próprio Sid Meier!!! Este senhor é um dos game designers que eu mais admiro, foi pelas mãos dele que eu tive conhecimento do jogo de RTS Colonization (um dos melhores que joguei) e posteriormente o jogo e sequela Civilization. Nesta altura ainda não sei muito bem do que se trata o livro mas já está na lista de aquisições para muito breve!!

Também encontrei neste portal uma lista mais ou menos extensa (50 visiveis), e quase que organizada, acerca de “Books on Video Game History”. É sempre um tema que me interessa, principalmente se forem jogos indie e se foram jogos pelos quais eu passei várias horas. E neste caso também encontrei uma lista acerc do tema

+infos(Sid Meier): https://www.goodreads.com/book/show/50489373-sid-meier-s-memoir

+infos(a lista dos históricos): LINK

+infos(a lista do game designer): LINK

Tags : , , ,

Proposta de trabalho (em Lisboa)

A malta do OnTop anda à procura de AR game designer… interessante!

+infos(página oficial): https://www.ontopstudios.com/

Tags : ,

Caravel: Set Forth

“Caravel: Set Forth”, mais um jogo com malta portuguesa no desenvolvimento :)

+infos(oficial): https://www.caravelgame.com/

Tags : ,

Livros a ler/comprar.. prenda?

Encontrei mais uma referência de um livro que gostava de ler.. “How to create your first board game, 5º edição” por Aaron Frias .. está em campanha no kickstart.

conteudos : 
Introduction
My First Board Game
Building on Your Game Idea
Common Board Game Trends
Popular Game Mechanisms
Game Journaling
Importance of Playing Modern Games
Translating Your Game Into a Spreadsheet
Your First, Hand-drawn Prototype
Solo Playtesting
Rough Prototypes
Graphic Design Tools
Design Basics
Rapid Prototyping Using the Component.Studio online tool
Printing your Prototypes
How to 3D print components for your game
Using Tabletopia and Tabletop Simulator to Upload, Pitch and Test Your Game
Group Playtesting
Pitching to Publishers
Blind Playtesting
Self-Publishing Basics
Kickstarter Basics
Kickstarter Video Basics
Rules Guide Recommendations
Shipping Basics
Mass Manufacturing Options
Lessons Learned

e  o livro.. “The Board Game Designer’s Guide: The Easy 4 Step Process to Create Amazing Games That People Can’t Stop Playing” por Joe Slack

+infos(a campanha) LINK

Tags : , ,

Fun fun..

humor…
+infos(fonte): https://www.gamepressure.com/

Tags :

Game Jam Online pela MAD

Mais uma edição da MAD Game Jam… desta vez online!

+infos(oficial): https://eventos.esmad.ipp.pt/mad-gamejam/

Tags : ,

Jogos desenvolvidos por portugueses..

Lista que encontrei acerca de videojogos desenvolvidos por portugueses com com a colaboração de portugueses :)

 

Tags : ,

Proposta de trabalho (em Lisboa)

“Programadores de Unity por esse Portugal e não só estamos a contratar para o estúdio de Lisboa.”

Description
We’re looking for an awesome Unity developer to join our Client team in Lisbon and help push Avakin to the next level.

Responsibilities:
Writing clear, efficient and robust code using C# and Unity;
Collaborate with other departments to design, develop and maintain features;
for a live title with an active player base;
Ensure reliability and performance of the title through bug fixing and optimising;
Work with Leads and Producers to plan and schedule tasks;
Helping the team highlight and solve potential issues when delivering a release;
Writing and maintaining technical documentation where appropriate.

Requirements
Minimum of 2 years experience in the video game industry or equivalent;
At least one shipped title, preferably on a mobile platform (multiplayer is a plus);
A clear understanding of C# as well as the Unity game engine and its nuances;
Experience with RESTful API services;
Good understanding of distributed systems and multiplayer games’ tech stack;
Working knowledge of version control systems (e.g. Git, Perforce);
Excellent English verbal and written communication skills;

Desirable: 
Good understanding of scripting languages (Lua, TypeScript, Shell), Understanding of how implemented features are perceived and used by players, Experience working in networked game development, Experience developing on mobile platforms.

Benefits
Profit share bonus scheme, Share Scheme
Life Insurance, Healthcare Cash Plan, Income Protection
Flexible working hours
Public transportation support
Food allowance
Flexible 23 days holiday (plus bank holidays)

Lockwood Publishing is one of the leading independent UK mobile games companies. Our most successful product to date is a 3D virtual world on mobile called Avakin Life.

+infos(): https://apply.workable.com/lockwood/j/37D25DFCD5/

Tags : ,

Previsões.. por Joost van Dreunen

encontrei uma previsão do que supostamente vai acontecer em 2021 :P .. interessante perspetiva, mas..

+infos(fonte): https://superjoost.substack.com/p/predictions-new-rev-models-and-the

+infos(livro do autor): LINK

Tags : ,

off-topic.. GameMaker Studio 2

“Web-browser maker Opera acquired YoYo Games for $10 million. The firm’s GameMaker Studio 2 game engine has been downloaded 10 million times since 2012, which doesn’t exactly make it the biggest fish in the pond but I am curious to see whether Opera can offer something novel and accessible. ”

será que o GameMaker Studio 2 vai ser um software grátis?

Tags : ,

Humble Software Bundle: Maps Extravaganza Encore (uma campanha)

Até parece que sou comercial, mas esta é outra campanha da Humble mas o caso não é tanto para GameDev mas para videojogos digitais. Tratam-se de um asset e cursos que permitem desenvolver jogos digitais. São vários os cursos online para usar o Unity e outros temas paralelos. Da lista de prendas desta campanha consta:
Finish It! Motivation & Processes For Game Devs
Math For Video Games
Complete Unity Developer 2D
How To Get A Job In The Video Game Industry
Git Smart: Learn Git in Unity, SourceTree & GitHub
POLYGON City Pack by Synty Studios
Complete Unity Developer 3D
Unity Multiplayer Coding & Networking
RPG Core Combat Creator
Unity Dialogue & Quests Creator
RPG Inventory Systems Creator

custo mínimo total: 20.72 euros

+infos(a campanha): LINK

Tags : , , ,

Novos talentos Fnac

“Está aberta mais uma edição dos NTF este ano com mais uma categoria – Videojogos! Tens três meses para nos enviares o teu projeto!
Quando te fazem esquecer o mundo lá fora, mostra-nos a paixão dentro de ti. Liberta o que te faz viajar no lugar, sentir borboletas no estomago e te põe os olhos a brilhar. O planeta está num turbilhão, sim, mas não se conhecem limites para a criatividade. Deixa a emoção falar e o teu talento explodir.”

O júri:

“Partilha connosco(1) a Build do jogo jogável para PC/MAC, o trailer do jogo e ainda 3 minutos de vídeo de gameplay do jogo e deixa o teu talento explodir.
Serão distinguidos 1 vencedor e 2 menções honrosas que serão conhecidas na entrega de prémios em Junho. A decisão dos 3 premiados fica a cargo de um júri especializado composto por Ricardo Flores (Diretor da Lockwood Publishing Lisboa), Isaque Sanches (Coletivo A Ludoteca), André Santos (Jornalista FutureBehind) e Alexandre Barbosa (Jornalista e Diretor Assistente);

Os três projetos vencedores verão os seus jogos integrados nas plataformas de comunicação da FNAC, com possibilidade de download do videojogo. O vencedor recebe ainda um cheque de 1.500€ da REPSOL, a criação do seu jogo exposto nos fóruns FNAC, uma licença de 1 ano Unity (Lockwood) e um monitor OMEN X25 (HP).”

+infos(oficial): https://www.fnac.pt/novostalentos

+infos(regulamento): LINK

Tags : ,

6th International Conference on the Foundations of Digital Games (FDG)

“The 16th International Conference on the Foundations of Digital Games (FDG) 2021 is proud to invite research contributions in the form of papers, games and demos, doctoral consortium applications, as well as panel, competition, and workshop proposals. We invite contributions from within and across any discipline committed to advancing knowledge on the foundations of games: computer science and engineering, humanities and social sciences, arts and design, mathematics and natural sciences. Papers and Games-and-Demos submissions will receive double-blind peer reviews. Workshops, panels, competitions, and all other submissions will be single-blind. All papers are guaranteed at least three reviews. Games and Demos are guaranteed two reviews. There will be no rebuttal. As in previous years, we aim to publish the FDG 2021 proceedings in the ACM Digital Library. ”

Tracks:
Game Development Methods and Technologies
This track is dedicated to submissions focused on different methods, technologies, and tools used for the development of computer games. The submissions may discuss development of both software and content. Topics include, but are not limited to, algorithms, software tools, methodologies, pipelines, and production issues. This track invites both scholarly studies as well as speculative position papers on the subject.
This track includes the use of virtual reality and augmented reality for games. Submissions that examine, validate, invalidate or create practices, patterns, mechanics, dynamics or aesthetics are encouraged to submit. Examples of such work include the examination and innovation of design methods for AR/VR, alternative methods of interaction and haptics, historic examinations of the involved technologies, analyses and critiques on the use of AR/VR, innovative AR/VR technologies and the examination of mechanics and games designed forAR/VR.

Games Beyond Entertainment and Game Education
This track calls for papers showing results on the use of games, gaming, and game design for primary goals that are not entertainment. Topics include serious or transformational games, games with a purpose, advergames and exergames, gamification and gameful design, game-based learning, informal learning in games, and educational and other ‘serious’ uses of entertainment games and gaming practices. Authors are encouraged to highlight the importance of the target problem that the game is addressing, and how their design or research findings makes a contribution to the current state of research on games for a purpose.
This track is also concerned with the teaching of games, game development and design, and game-related concepts at all levels of education and training. Topics include design and development of curricula, instructional methods, teaching tools and techniques, assessment methods, learning/instructional activities, collegiate game programs, e-sports and educational program management.

Game Analytics and Visualization
This track is suitable for all papers pertaining to aspects of game data science, analytics and game data visualization. This includes work based on player behavioral data analysis, including player modeling, churn analysis, and creating or understanding players’ profiles as well as aspects of business intelligence, such as performance evaluation or workflow optimization. Papers submitted to this track should present contributions that advance the current state-of-the-art, taking into account the knowledge bases in academia and industry, of players, play behaviors, processes or performance. We encourage submissions that span methodological approaches including quantitative, qualitative and mixed-methods, as well as novel contributions to methodological approaches. Examples of topics include visualization of game data, analysis of behavioral (or other) game data, advances in methodological approaches to analyze and visualize game data, as well as applying or expanding statistical methods, machine learning, including deep learning, and AI, as well as visualization algorithms used to collect or analyze game data.

Game Artificial Intelligence
This track focuses on the many applications of computational and artificial intelligence to the playing, design, development, improvement, and testing of video games. Topics include general game-playing AI, procedural and player-driven content generation, mixed-initiative authoring tools, computational narrative, believable agents, and AI assisted game design.

Game Criticism and Analysis
This track calls for papers that approach the criticism and analysis of games from humanities-informed perspectives. Submissions are encouraged from scholars engaging in narrative, visual and software studies approaches to games and games criticism using methodologies such as archival research, hermeneutics, and oral history. This track will also consider critical theoretical and/or historical analysis of games, and game genres from perspectives such as (but not limited to) postcolonial theory, feminism, historicism, subaltern studies, queer theory, the environmental humanities, psychoanalysis, and other related topics. This track also includes the emerging trends such as esports and streaming from a humanities-informed perspective. Such work includes studies of demographic trends in esports and streaming, feminist and gender studies perspectives, social-cultural critiques and analyses of streaming and eSports subcultures, examination of societal and economic impact of eSports

Game Design and Player Experience
This track focuses on the exploration of different ways for designing and implementing interaction between the player and the game, as well as on understanding the experiences derived from those interactions. This track will consider qualitative and quantitative experimental studies. Topics include, but are not limited to, games design, mechanics, persuasive games, novel use of controllers, user research, and player psychology.

+infos(oficial): http://fdg2021.org/

Tags : , , ,

GameJam 2021 em janeiro (online)

A Global Game Jam está de volta! Num ano atípico, e face as complicações do mundo exterior, o servidor do GameDev.PT abre as portas como espaço e jam site da Global Game Jam Online, com a comunidade juntar-se novamente para mais um fim-de-semana a criar jogos lado-a-lado com o resto do mundo, pela primeira vez em formato online!

Este ano, os jam sites portugueses juntam-se também em parceria como Global Game Jam Portugal para ajudar a levar os jam sites ainda mais longe!

Se queres participar numa game jam, não deixes que a pandemia te impeça! Entre 29 e 31 de Janeiro, participa connosco por 48 horas, forma uma equipa e cria o teu jogo! O evento é aberto a toda a comunidade, e convidamos profissionais, estudantes e amadores a juntarem-se, mesmo que nunca tenham participado numa jam antes!

Queres participar? Entra no nosso Discord e lê a sala #ggj-info para mais informações! Depois disso, inscreve-te no jam site aqui através do site da Global Game Jam!

Todos os anuncios em relação à jam serão feitos através do Discord!

+infos(oficial): LINK

 

Tags : ,

Gamer’s Chest, All-in-One Tabletop Game Organizer

Encontrei este projeto no kickstarter para os jogos de tabuleiro.. tão fixe!

+infos(a campanha): LINK

Tags :

em kotlin: gps terceira versão com mapa

Adicionar uma dependência via menus no build-gradle (module)
(1)

ficheiro: build-gradle(module)

...
dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'com.google.android.gms:play-services-location:17.1.0'
    implementation 'com.google.android.gms:play-services-maps:17.0.0'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

ficheiro: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="pt.isec.estuda.amov_gpsv1">

    <!-- pedir estas permissões -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <!-- pedir estas permissões para aceder aos mapas e ao estado da rede não são em runtime -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Amov_gpsv1">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="AIzaSyD4M076vcUKcPZNGlyBzFshU-J4jJ98x5g"/>
    </application>

</manifest>

ficheiro: MainActivity.kt

package pt.isec.estuda.amov_gpsv1

import android.Manifest
import android.annotation.SuppressLint
import android.content.pm.PackageManager
import android.graphics.Color
import android.location.Location
import android.location.LocationListener
import android.location.LocationManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.core.app.ActivityCompat
import com.google.android.gms.location.*
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.CameraPosition
import com.google.android.gms.maps.model.CircleOptions
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MarkerOptions

const val TAG = "Location"

class MainActivity : AppCompatActivity(), OnMapReadyCallback{

    var locEnable = false //caso não ajam permissões

    lateinit var fLoc : FusedLocationProviderClient

    val ISEC = LatLng(40.1925, -8.4115)
    val DEIS = LatLng(40.1925, -8.4128)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        fLoc = FusedLocationProviderClient(this)

        //pedir o objeto google maps e vai ser necessário o OnMapReadyCallback
        (supportFragmentManager.findFragmentById(R.id.map) as? SupportMapFragment)?.getMapAsync(this)
    }

    override fun onResume() {
        super.onResume()
        startLocationServices(true)
        //para poupanças de energia, ativar o mais tarde possivel
    }

    override fun onPause() {
        super.onPause()
        //para poupanças de energia, desactivar o mais cedo possivel
        if(locEnable) {
            locEnable = false
        }
    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        //se tivermos as permissões
        //locationM.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 100f, this)
        if(requestCode == 1289) {
            startLocationServices(false)
        }
    }

    fun startLocationServices(askPerm : Boolean) {
        //1ºprovider, 2º intervalo de segundos,3º distancia minima ,4º  o listener
        //se for for telemovel NETWORK_PROVIDER
        //dar permissões: ACCESS_FINE_LOCATION
        //e pedir em runtime, add permissions check
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            //pedir as permissões //&& ou ||
            if (askPerm) {
                ActivityCompat.requestPermissions(this, arrayOf(
                        Manifest.permission.ACCESS_FINE_LOCATION,
                        Manifest.permission.ACCESS_COARSE_LOCATION), 1289) //1289 um valor qualquer!
            } else {
                finish()
            }
            return
        }
        val locRequest = LocationRequest().apply {
            interval = 4000
            priority = LocationRequest.PRIORITY_HIGH_ACCURACY
            //ocultar para ja estes dois:
            //fastestInterval = 2000
            //maxWaitTime = 10000
            //numUpdates /? a ver, quantidade de updates
        }
        //activar
        locEnable = true
        fLoc.requestLocationUpdates(locRequest, locationCallBack, null)
    }

    //função locationCallBack
    var locationCallBack = object : LocationCallback() {
        override fun onLocationResult(p0: LocationResult?) {
            Log.i(TAG, "onLocationAvailability: ")
            //locations é uma lista de localizações
            p0?.locations?.forEach {
                Log.i(TAG, "onLocationAvailability: ${it.latitude} ${it.longitude}")
            }
        }
    }

    @SuppressLint("MissingPermission")
    override fun onMapReady(map: GoogleMap?) {
        //implementar o omMapReady, sendo p0 o ojecto google maps
        map ?: return //if map == null return
        map.isMyLocationEnabled = true
        map.uiSettings.isCompassEnabled = true
        map.uiSettings.isZoomControlsEnabled = true
        map.uiSettings.isZoomGesturesEnabled = true
        val cp = CameraPosition.Builder().target(ISEC).zoom(17f).bearing(0f).tilt(0f).build()
        map.animateCamera(CameraUpdateFactory.newCameraPosition(cp))
        map.addCircle(
            CircleOptions().center(ISEC).radius(150.0).fillColor(Color.argb(128,128,128,128)).strokeColor(Color.rgb(128,0,0)).strokeWidth(4f)
        )
        val mo = MarkerOptions().position(ISEC).title("ISEC-IPC").snippet("Instituo.....")
        val isec = map.addMarker(mo)
        isec.showInfoWindow()
        map.addMarker(MarkerOptions().position(DEIS).title("DEIS-ISEC"))
    }

}

ficheiro: activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <!-- incluimos o mapa como um fragmento -->
    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:name="com.google.android.gms.maps.SupportMapFragment"/>
</FrameLayout>
Tags : , , , , , ,

em kotlin: gps segunda versão

Adicionar uma dependência via menus no build-gradle (module)
(1)

(2)

(3)

ficheiro: build-gradle(module)

...
dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'androidx.core:core-ktx:1.3.2'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.2.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'com.google.android.gms:play-services-location:17.1.0'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

ficheiro: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="pt.isec.estuda.amov_gpsv1">

    <!-- pedir estas permissões -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Amov_gpsv1">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

ficheiro: MainActivity.kt

package pt.isec.estuda.amov_gpsv1

import android.Manifest
import android.content.pm.PackageManager
import android.location.Location
import android.location.LocationListener
import android.location.LocationManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.core.app.ActivityCompat
import com.google.android.gms.location.*

const val TAG = "Location"

class MainActivity : AppCompatActivity() {


    var locEnable = false //caso não ajam permissões

    lateinit var fLoc : FusedLocationProviderClient

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        fLoc = FusedLocationProviderClient(this)
    }

    override fun onResume() {
        super.onResume()
        startLocationServices(true)
        //para poupanças de energia, ativar o mais tarde possivel
    }

    override fun onPause() {
        super.onPause()
        //para poupanças de energia, desactivar o mais cedo possivel
        if(locEnable) {
            locEnable = false
        }
    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        //se tivermos as permissões
        //locationM.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 100f, this)
        if(requestCode == 1289) {
            startLocationServices(false)
        }
    }

    fun startLocationServices(askPerm : Boolean) {
        //1ºprovider, 2º intervalo de segundos,3º distancia minima ,4º  o listener
        //se for for telemovel NETWORK_PROVIDER
        //dar permissões: ACCESS_FINE_LOCATION
        //e pedir em runtime, add permissions check
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            //pedir as permissões //&& ou ||
            if (askPerm) {
                ActivityCompat.requestPermissions(this, arrayOf(
                        Manifest.permission.ACCESS_FINE_LOCATION,
                        Manifest.permission.ACCESS_COARSE_LOCATION), 1289) //1289 um valor qualquer!
            } else {
                finish()
            }
            return
        }
        val locRequest = LocationRequest().apply {
            interval = 4000
            priority = LocationRequest.PRIORITY_HIGH_ACCURACY
            //ocultar para ja estes dois:
            //fastestInterval = 2000
            //maxWaitTime = 10000
            //numUpdates /? a ver, quantidade de updates
        }
        //activar
        locEnable = true
        fLoc.requestLocationUpdates(locRequest, locationCallBack, null)
    }


    }
    //função locationCallBack
    var locationCallBack = object : LocationCallback() {
        override fun onLocationResult(p0: LocationResult?) {
            Log.i(TAG, "onLocationAvailability: ")
            //locations é uma lista de localizações
            p0?.locations?.forEach {
                Log.i(TAG, "onLocationAvailability: ${it.latitude} ${it.longitude}")
            }
        }
}

Com esta versão são feitos updates mais rapidamente, com a ajuda do LocationRequest.PRIORITY_HIGH_ACCURACY
este é o método recomendado pela google..

Tags : , , , , , ,

em kotlin: gps primeira versão

ficheiro: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="pt.isec.estuda.amov_gpsv1">

    <!-- pedir estas permissões -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Amov_gpsv1">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

ficheiro: MainActivity.kt

package pt.isec.estuda.amov_gpsv1

import android.Manifest
import android.content.pm.PackageManager
import android.location.Location
import android.location.LocationListener
import android.location.LocationManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.core.app.ActivityCompat

const val TAG = "Location"

class MainActivity : AppCompatActivity(), LocationListener {

    lateinit var locationM : LocationManager
    var locEnable = false //caso não ajam permissões

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        locationM = getSystemService(LOCATION_SERVICE) as LocationManager
    }

    override fun onResume() {
        super.onResume()
        startLocationServices(true)
        //para poupanças de energia, ativar o mais tarde possivel
    }

    override fun onPause() {
        super.onPause()
        //para poupanças de energia, desactivar o mais cedo possivel
        if(locEnable) {
            locationM.removeUpdates(this)
            locEnable = false
        }
    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        //se tivermos as permissões
        //locationM.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 100f, this)
        if(requestCode == 1289) {
            startLocationServices(false)
        }
    }

    fun startLocationServices(askPerm : Boolean){
        //1ºprovider, 2º intervalo de segundos,3º distancia minima ,4º  o listener
        //se for for telemovel NETWORK_PROVIDER
        //dar permissões: ACCESS_FINE_LOCATION
        //e pedir em runtime, add permissions check
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            //pedir as permissões //&& ou ||
                if(askPerm) {
                    ActivityCompat.requestPermissions(this, arrayOf(
                            Manifest.permission.ACCESS_FINE_LOCATION,
                            Manifest.permission.ACCESS_COARSE_LOCATION), 1289) //1289 um valor qualquer!
                }else{
                    finish()
                }
            return
        }
        locationM.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 100f, this)
        locEnable = true
        //outras:
        //addProximityAlert, funções de proximidade para um determinado local
        //addNmeaListener, ir buscar as mensagens de baixo nivel que um chip gps consegue obter
        //requestSingleUpdate, ir buscar apenas um update(uma localização armazenada)
        //getLastKnownLocation, obter um objeto Location, obtemos logo uma localização mesmo que não seja correta
        //providers, acerca dos requisitos da rede
    }

    override fun onLocationChanged(location: Location) {
        val latitude = location.latitude
        val longitude = location.longitude
        Log.i(TAG, "onLocationChanged: $latitude $longitude")
        //a ver o location.distanceTo()

    }
}
Tags : , , , , , ,

Magallanes_ICC :

Está a decorrer um “Open Call Programa de Apoio ao Empreendedorismo Criativo” onde se inclui a apresentação para Jogos/ softwares educativos

+infos(oficial): https://arterialab.uevora.pt/criativos/

Tags : , ,

Gestão de projetos de software, apontamentos

Programa:
1. Project planning
• Software estimation and scheduling
• Development of a software development plan
2. Quality management
• Quality plan
• Reviews and inspections
• Software testing
• Configuration management and version control
3. Software project management
• Requirements management
• Project monitoring and control
• Risk analysis and management
• Team management
4. Software development processes
• Process models and process measurements

software project problems?
1. Excessive schedule pressure
2. Changing needs
3. Lack of technical specifications
4. Lack of a documented project plan
5. Excessive and secondary innovations
6. Unclear requirements
7. Lack of scientific methods
8. Defects discovered too late
9. Unethical behavior

Why do software projects fail?
• People begin programming before they understand the problema
• The team has an unrealistic idea about how much work is involved.
• Defects are injected early but discovered late.
• Programmers have poor habits – and they don’t feel accountable for their work.
• Introduce software quality from the very beginning of the project

Vision & Scope (identificar quais as necessidades, e convencer o cliente a comprar, construído pelo business manager)
1. Problem Statement
• Project background (qual é o problema)
• Stakeholders (clientes de um restaurante, usam o tablet..)
• Users (quem vai usufruir, o cliente, o dono do restaurante)
2. Vision of the Solution
• Vision statement (como vai ser resolvido, …)
• List of features (o que vai ter a app, menus, quantidades…)
• Features that will not be developed
• Risks
• Assumptions (existem poucas opções…)

Documents lifecycle (gestão das versões)

Project lifecycle


Phase1: Project Preparation
• Stage 1.1 – Project Setup & Software Concept
o Deliverable D1.1.1 – Vision & Scope
o Deliverable D1.1.2 – Milestone M1.1 Report
o Milestone M1.1 – Scope Review
• Stage 1.2 – Project Planning
o Deliverable D1.2.1 – Software Development Plan
o Deliverable D1.2.2 – Quality Assurance Plan
o Deliverable D1.2.3 – Milestone M1.2 Report
o Milestone M1.2 – Plan Review
Phase2: Project Execution
• Stage 2.1 –Requirements Specification
o Deliverable D2.1.1 – Software Requirements Specification
o Deliverable D2.1.2 – Risk Plan
o Deliverable D2.1.3 – Acceptance Test Plan
o Deliverable D2.1.4 – Milestone M2.1 Report
o Milestone M2.1 – Software Requirements Review
• Stage 2.2 – Software Development
o Deliverable D2.2.1 – Software Architecture & Design
o Deliverable D2.2.2 – Milestone M2.2 Report
o Milestone M2.2 – Design Review
• Stage 2.3 – Software Acceptance
o Deliverable D2.3.1 – Acceptance Test Report
o Deliverable D2.3.2 – Quality Assessment Report
o Deliverable D2.3.1 – Milestone M2.3 Report
o Milestone M2.3 – Acceptance Review
Phase3: Project Closeup
• Stage 3.1 – Software Delivery
o Deliverable D3.1.1 – Post-Mortem Analysis
o Milestone M3.1 – Closeup

Project Plan

(que trabalho existe para fazer/descrição, quem vai fazer)
Uma lista de tarefas/módulos, divisão do trabalho

Categorias dos processos

Engenharia
Software concept
Project planning

Project planning
WBS (work breakdown structure)
project estimation report (o que se vai fazer), tarefas pequenas, subdivididas,

Gestão
Project setup
Documents management
Change management
Meetings management

Ciclo de vida geral de um documento:

Qualidade
Milestone review

Quality assurance
Inspection
Reisk management
Testing
Deskcheck
Walkthrought

5. Estimation
Entra o gestor do projeto
Faz uso do vision and scope para construir o software develpment plan, onde surge a estimativa. Usando o modelo cascata, fazemos a estimativa completa
Estimativas vs espectativas no cliente (âmbito, custo, duração..)
Estimativa serve para negociar (custo e calendário), para prlanear o projeto, para controlar o projeto

Ou um work breakdown structure (WBS): é a subdivisão do trabalho em tarefas mais pequenas de trabalho, organizadas de forma hierárquica
Ou um product breakdown struture (PBS): é a subdivisão em tarefas mais pequenas; inclui o WBS; indicar um esforço para cada tarefa (o trabalho que foi efetivamente realizada)

Para isso é necessário:
• Saber os pressupostos de cada uma das tarefas
• Obter consenso dentro da equipa, discutir, conversar..
Tendo em consideração:
• O nível de confiança, o histórico/conhecimentos em tarefas semelhantes, experiência pessoal.
E as suposições? Cuidado com isto..
A estimativa é uma aproximação a uma “realidade”

Problemas relacionados com o estimar:
Complexidade dos sistemas VS trabalho repetitivo
Subestimar VS sobrestimar pode tornar o produto mais caro
Estimativas são objetivos de facto
Informação inadequada acerca das capacidades da organização
Requisitos pouco esclarecidos/claros
“Estimar com o que achamos que vamos conseguir fazer, sem preocupações com as horas que temos”

O que é estimado:
• o peso
• o esforço (horas)
• o calendário (uma unidade no calendário)
• o custo (euros)

O cone da incerteza
(quanto mais à frente for a fase do desenvolvimento melhor é a estimativa)


Técnicas como estimar:
“adivinhar” de forma estruturada
Experiência
Delphi groups
Analogias (olhar para projetos anteriores)
Bottom-up, estimar módulos mais pequenos, para cada componente
Ou o Planning poker
(existe um moderador, existe o dono do produto, e os que estimam)
1º o moderador lê a descrição dos requisitos, as linhas do WBS
2º o dono do produto responde às questões dos estimadores
3º cada um vai estimar com uma carta: 1 quer dizer uma hora, ou um ponto, … e coloca a carta virada para baixo (sem divulgar)
4º depois de todas as estimativas estarem indicadas, as cartas são voltadas para cima
5º só se a estimativa variar profundamente, os donos das cartas mais altas e mais baixas discutem as razões. Todos devem participar na discussão, dentro de um limite de tempo

E por fim quando se chegar ao consenso escreve-se a estimativa! O Project estimation report!
(não existe número 4.. e outras, existem poucas cartas reuniões mais rápidas, mais fácil chegar a um consenso, menos cartas mais consenso)
(mas e se uma tarefa durar mais tempo que a ultima carta 9?, dividir a tarefa em sub tarefas..)

6. Gestão da qualidade
Um produto com qualidade vai ao encontro das espectativas do cliente
Como obter a qualidade?
Os processos estão escritos
Manual da qualidade
Tem processos que seguem normas (certificações)
E os processos de qualidade:
O plano de qualidade é definido por projeto (seguindo o quality manual)

As tarefas de baixo:
são as tarefas extra, surgem no plano de qualidade rever os requisitos, rever o código, fazer testes ao código.. e por exemplo implicam um esforço, quanto mais critico é o software, mais esforço surge nesta parte e vai ter um custo maior do que escrever propriamente o código.

O plano de qualidade:
• Vão ter atributos (internamente[o que podemos fazer na empresa, o que interessa para a equipa, código fácil de compreender, é portável?, usar o mesmo código para outro sistema] e externamente[“não gastar bateria”, safety “ se alguém morrer por erros de código”], do ponto de vista do cliente, de fora da equipa)
o Exemplos de atributos (o que é mais importante para o projeto):

o As métricas?
 De produto: tempo de execução, números de bugs, número de linhas de código, satisfação do utilizador
 Do projeto: se mudaram os requisitos, requisitos estáveis, se seguiram os processos todos
 Ajudam a medir a qualidade (tem o produto no fim a qualidade que era desejada ou não?)
• Vão ter processos (revisões, testes, qual a arquitetura, testes de performance)
• Vão ter standarts (que convecções vão ser utilizadas para garantir qualidade interna)
• Vão ser definidas métricas

Surge então o documento: quality assurance plan (plano de garantia de qualidade)

quality assurance plan: serve para indicar o que queremos fazer, quais os objetivos de qualidade, como vamos medir, que atividades vão ser realizadas
quality assessment report: serve para medir, para saber se conseguimos atingir, colocar as não conformidades (alturas em que não se seguiu o plano)

7. Capítulo das revisões:
“quanto mais tarde for encontrado o problema, por exemplo erro no código, mais caro fica a revisão”
Servem para ser descritas no quality assurance plan

Três tipos de revisões
• Inspeções:
o São reuniões
o Os vários inspetores vão analisar código ou documentos, à procura de defeitos
o Objetivo de encontrar defeitos
o Por exemplo ao software requirements specifications (SRS) e test plans
o Tem fases:
 Planeamento: um documento (SRS e Vision and Scope e tudo o que estiver relacionado), o autor recolhe a informação e chama o moderador que organiza a reunião
 Preparação: antes da reunião cada um dos inspetores (que são todos) vai ler, e toma nota do que for suspeito
 Reunião: alguém vai ler o documento e vai explicando. Os outros fazem perguntas, e quem vai responder é quem lê. Se encontrarem defeitos o anotador toma notas. O autor está calado. Surge a discussão/debate.
 Rework: o autor vai corrigir de acordo com as anotações
 Follow-up: o moderador vai ver se as correções foram bem feitas.
 [moderador (pode pedir pelas notas, decide o que é para anotar ou não), leitor (lê o documento), inspetor (são todos menos o leitor), anotador]
 Surge o review report: com os defeitos, gravidade dos defeitos
O processo da inspecção:

Três tipos de revisões (continuação)
• Controlo documental (deskchecks):
o O autor distribui o que quer rever para que alguém faça revisões, para revisores

Três tipos de revisões (continuação)
• Reunião de orientação (walkthroughs):
o O autor chama os revisores, que leem o documento
o Os revisores leem o documento antes da reunião
o Mais informal

8. Os testes ao software
Testar um código pode ser só ler
Testar pode ser aplicar dados artificiais
Testar pode ser uma revisão manual do código
Testes não revelam a ausência de problemas
Teste revelam os problemas do código

Os software review: são análises estáticas, leitura do código
Os software testing: é uma analise dinâmica, não funcionais
São ambos complementares ( E )

Os testes:
• Testes unitários:
o Modulo individual, funções, método, objetos, classes..
o Procurar defeitos
o Escrevo um método e vou logo testar
• Testes de integração (integration test):
o Módulo está feito e vou juntar a outro módulo
o Ver como correm as coisas, integrando ambos
o E podem ser:
 Integração incremental: Juntar os dois, aos poucos
 Big bang : juntar tudo feito, por várias pessoas
• Teste de aceitação:
o Deve existir um plano de testes
o Quando a aplicação estiver terminada

Test plans (ATP, plano de testes):
• indica como vamos testar, deve ser feito aquando do SRS
• sumariar as atividades relacionados com os testes
• qual vai ser a sequência de testes
• deve ser feito logo no início quando ainda não existe código.
• Ajuda a focar na forma como vai ser escrito o código.
• Servem para verificar se todos os requisitos foram escritos.

O processo dos testes

Com a ajuda do SRS software requirements specification
Surge:
QAP quality assurance plan
ATP Acceptance Test Plan (descrição dos testes)
ATR Acceptance Test report

Os testes (continuação):
• Testes de usabilidade:
o Satisfação do participante com o produto
o Através de tarefas
o Pode ser quantitativa (nível de satisfação)
o Pode ser qualitativa

9. Estimativa
Esforço (pessoas-hora) VS Duração (hora)
No escalonamento devemos alocar recursos: as pessoas em cada uma das tarefas
Deve ser inscrita a informação do WBS (work breakdown structure)
Ter em conta o overhead
Saber a duração das tarefas
Identificar as dependências (entre tarefas)
Exemplo: finish-to-start. Uma revisão só começa depois do documento estar pronto
Diagrama de gantt, por exemplo:

Podem ser usados buffers no escalonamento
Os buffers são tempos mortos para resolver atrasos imprevistos

Project planning process: (estimate = escalonar)

10. Monitorização e controlo (Project Monitoring And Control)
Monitorizar, é saber se as tarefas estão a ser realizadas dentro do plano
Controlar, é controlar o âmbito, o calendário, reestimar
Controlar: dentro do prazo, se está dentro do orçamento, se estão a gastar ou não o orçamento, e se o trabalho está a ser seguido conforme o planeado

Métodos para controlar
• Burndown chart
o Projetos curtos
o Iteração de uma só vez
o Verificar todos os dias o trabalho que falta realizar

o Verde o real:
 indica o que falta fazer,
 linha verde abaixo, estamos adiantados, falta menos do que o previsto
 linha verde acima, estamos atrasados, por exemplo tínhamos planeado/estimado 80 horas mas deviam ser 100 horas
o cor de laranja planeado
 cor de laranja começa com o número máximo de horas que temos até esgotarmos e chegarmos a zero horas disponíveis, e data respetiva do âmbito do projeto
o este gráfico depende das estimativas
o não diz quanto trabalho foi feito
o serve para ajudar a prever quando vai terminar
o não funciona com tarefas muito grandes

• Earned Value Analysis (EVA)
o Permite avaliar o desempenho de uma equipa
o Relacionado com metodologias tradicionais
o Projetos grandes ou pequenos
o Comparar o custo, comparar o escalonamento e o âmbito
o Prever se o projeto consegue terminar a tempo
o Tudo o que é feito tem valor
o O valor é o esforço que se dedica a uma tarefa
o Budget cost of work (BCW)
 Cada tarefa é estimada em ternos de esforço, ou custo
o Actual cost of work (ACW)
 Custo para completar a tarefa
 Quanto tempo demoramos para completar uma tarefa
o Planned Value (PV)
 Somar as tarefas todas planeadas até agora
 Exemplo: se tinha uma tarefa de 5 horas + tarefa de 3 horas para terminar hoje, o plano seria ter 8 horas de ganho, é este o valor planeado
o Earned value (EV)
 É o que efetivamente ganhamos, por exemplo as tais 8 horas
o Actual cost (AC)
 Quanto custou, o que efetivamente custou: por exemplo se para a tarefa de 5 hora demorados 10, e se para a tarefa de 3 horas demoramos 6 então custou 16 horas

Análise ao gráfico:
• Linha azul (BAC)
o é as horas que temos para gastar
o qual é o orçamento para todo o trabalho
• Linha vermelha (PV)
o o que estamos a planear
o qual é o valor estimado do trabalho planeado que vai ser executado
o é o valor ganho
• linha amarela (EV)
o à medida que as tarefas vão sendo cumpridas
o para cima do atual cost (da verde): trabalhamos para além do que estava previsto, se calhar terminamos mais tarefas, pois existe um valor ganho mais elevado do que o valor planeado. Quer dizer que está a correr bem
o qual é o valor estimado do trabalho planeado realmente concretizado
• linha verde (AC)
o é o tempo que realmente se gastou
o qual foi o custo que aconteceu

11. Gestão do risco
O plano de risco é sobre algo que pode correr mal
Antecipar os problemas e dessa forma evitá-los
Planear para minimizar ou anular os efeitos do risco no projeto:
• Risco sobre o projeto:
o Se ficarmos doentes
• Risco sobre o produto:
o A framework pode correr mal por algum motivo
• Risco do negócio:
o produto muito bom, mas não vamos conseguir vender
• Risco da tecnologia, das pessoas, organizacional, ferramentas, requisitos, estimativa
• A gestão do risco tem como processos:
o Identificação do risco
 Quais são os riscos (de tecnologias, de pessoas, de organização, de requisitos, de estimativa)
 Existe uma reunião com todos os que vão participar
 Mas para saber o que é o risco, precisamos de saber PRIMEIRO o que é o sucesso do projeto (threshold of success) [smart]: com objetivos pequenos [short], mensuráveis [mensurable], alcançáveis (viável) [achivable], relevantes [relevant], e dentro do prazo [time bound]
 Risk statment: O que é que hoje é verdade e porque é que isso me preocupa (condição-> então existe a possibilidade -> de existir uma consequência)
o Análise do risco
 Qual a probabilidade dos riscos
 Qua é o impacto do risco (risk impact): catastrófico(5), sério(3), tolerável(1)
 Probabilidade do risco: baixa(1), moderada, alta. muito alta (5)
 E criar prioridades através do resultado da: probabilidade * impacto
 Ordenada do mais alto para o baixo
 Os mais importantes podem ser SÓ os catastróficos
o Planeamento do risco (risk statment)
 É a terceira fase
 Definir o que fazer sobre o risco que foi identificado
 Escolhemos lidar só com os mais altos por exemplo (mitigar estes) e colocar sobre observação os médios, e os outros ignorar
 Para os riscos elevados:
• Plano de prevenção (avoidance strategies): o que fazer para baixar a preocupação? O impacto do risco? Para se tornar um menor risco.. baixa a probabilidade
• Plano de minimização (minimization strategies): baixar o impacto do risco acontecer [outro elemento da equipa para substituir alguém]
• Plano de contingência (contigency plans): planos para lidar com o problema [negociar com o cliente o âmbito da aplicação]
o Monitorizar o risco
 Vamos monitorizar
 Regularmente verificar se existem alterações no risco

Processo de gestão do Risco

12. Requisitos do software
Primeiro perceber quais são as necessidades, através de entrevistas, perceber as regras se for um jogo, perceber o que o cliente quer
Vai ter casos de uso
Vai ter os requisitos funcionais: o que é que a aplicação vai fazer, uma descrição clara, descrição que vai ter que estar completa
Vai ter os requisitos não funcionais: ao nível do comportamento (ser fácil [definir o que é, um utilizador tem que terminar a operação ao fim de xx tempo ], ser rápido [demorar menos de dois segundos])
Fazer UI Mockups:
O SRS (software requirements specification) tem os casos de uso, requisitos…

Scope: Vision and Scope
Requirements : SRS (software requirements specification)
Design:

13. kickoff meeting
Gestor do projeto planeou tudo com o cliente e agora surge a primeira reunião entre a equipa e o cliente

14. software version control
Testar um módulo de cada vez
• Disadvantages of a test suite
o It’s a lot of extra programming
o However, a good test framework can help quite a lot
o You don’t have time to do all that extra work
o False! Experiments repeatedly show that test suites reduce debugging
time more than the amount spent building the test suite
• Advantages of a test suite
o Reduces total number of bugs in delivered code
o Makes code much more maintainable and refactorable
16. team management
As fases da formação de uma equipa:

17. processo de software
Ciclo de vida de um processo de software

Modelo em cascata:

Em cascata
Mapear a sequência de passos para desenvolver projetos

O modelo de processo
Qual o critério para começar
Qual o critério para terminar

Respostas de exame 1920_normal
[1] é conveniente ou mesmo obrigatório ter a equipa de desenvolvimento definida antes de iniciar a escrita do documento vision and scope? Porquê?
Não está. O VanS serve para definir o que vai ser feito, haver um entendimento entre o cliente e a empresa. Qual a visão e qual o problema a ser resolvido e o âmbito.
Não é preciso haver cliente. Isto é apenas definir o que é para ser feito, não é de todo obrigatório/necessário, talvez conveniente.
Mas para fazer o plano (escalonamento) SDP? Sim pela quantidade, mas não para especificar onde colocar cada um.

[2] indique um processo que tenha extrema importância num projeto critico, e que não foi levado muito a sério no caso do projeto que realizou em GPS. Deveria este processo ter sido abordado de outra forma em GPS?
O processo de risco: os riscos não eram muito elevados. Não eram processos críticos.
Ou deveríamos ter tido mais atenção porque a experiência da equipa não conseguiu abranger o número de riscos.
Riscos de estimativas.
Lidar com testes unitários.
Obter uma formação em como trabalhar em kotlin. Aumentar o budget para a qualidade para obter a formação.
Controlo dos documentos

[3] porque é que numa estimativa realizada com planning poker, quando as cartas apresentadas pelos vários participantes diferem, não se faz simplesmente uma média e passa-se rapidamente à tarefa seguinte? Explique então como se deve fazer.
Tem um grande interesse as cartas extremas (altas e baixas)
A média não interessa para nada.
É importante a discussão.
As cartas têm a ver com as horas. Muitas cartas muitas diferentes horas para distribuir. Para haver consenso mais rápido.
Técnica baseada em opiniões de peritos.

[4] defina um atributo externo e outro interno de qualidade para a unidade curricular de GPS. Explique porque são atributos de qualidade e porque os considera externo ou interno.
Externo: (visto pelo cliente/stakeholder) a complexidade para os alunos, a taxa de aprovação
Interno: (interessa para a equipa) reutilização do código, reutilização dos slides para o próximo ano

[5] uma vez que os testes de aceitação verificam o cumprimento de todos os requisitos, para que serve realizar testes unitários? É possível, no final de todos os testes, afirmar que o software não tem defeitos?
Os testes unitários servem para testar por exemplo, módulos individualmente.
Testar se cumpre o objetivo
Os testes unitários são usados dados artificiais
Isto não garante de forma alguma que o software não tem defeitos. Nunca se consegue testar todas as possibilidades
Os testes de aceitação têm acesso mais limitado, não conseguem cobrir tudo.

[6] imagine que está preparar-se para uma entrevista de emprego e está risco de não ser admitido. Escreva a preocupação na forma de um risk statment e descreva formas de mitigar o risco, por meio de:
a) uma ação de prevenção (avoidance)
b) uma ação de minimização (minimization)
c) e contingência
um risk statment é: O que é que hoje é verdade e porque é que isso me preocupa (condição-> então existe a possibilidade -> de existir uma consequência)
plano de risco: serve para prevenir as coisas, antecipar
risk statment: cv fraco E a empresa é exigente, consequência: não gostam do meu CV logo posso não ser contratado
probabilidade de acontecer: alta (3) porque a empresa é difícil
prevenção: melhorar o CV, cartas de referência (tem que se baixar a probabilidade)
minimização: vou ter outras entrevistas em empresas menos exigentes (baixa o impacto)
contingência: pensar no que vou fazer, trabalhar como freelancer, ou vou tirar um curso (quando não se consegue fazer nada, decide já)

[7] Observe o gráfico de EVA – Earned Value Analysis seguinte e as situações em que a equipa se encontrava, considerando apenas os valores relativos entre PV – Planned Value, EV – Earned Value e AC -Actual Cost. Em qual dos dias registados parece ter ocorrido um pronto importante de viragem no projeto? Explique o que se parece ter-se passado.

BAC
• é as horas que temos para gastar
• qual é o orçamento para todo o trabalho

PV
• o que estamos a planear
• qual é o valor estimado do trabalho planeado que vai ser executado
• é o valor ganho

EV
• à medida que as tarefas vão sendo cumpridas
• para cima do atual cost (da verde): trabalhamos para além do que estava previsto, se calhar terminamos mais tarefas, pois existe um valor ganho mais elevado do que o valor planeado. Quer dizer que está a correr bem
• qual é o valor estimado do trabalho planeado realmente concretizado
AC
• é o tempo que realmente se gastou
• qual foi o custo que aconteceu

Entre 15 e 22: trabalharam menos, do que tinham planeado e a partir daqui atrasou-se
Entre 22 e 29: não conseguiram alcançar os objetivos dessa semana, tiveram que compensar
Dia 22: a partir daqui atrasaram-se e nunca mais conseguiram alcançar até ao final
Acabou terminar o projeto com esforço maior do que estava previsto

[8] Explique como fez no seu projeto de GPS para desenhar a linha de Planned Value no gráfico de Earned Value Analysis. Por que motivo esta linha deveria estar o mais linear possível?
PV
O mais linear possível para ter o ritmo de trabalho constante. O mesmo número de horas todas as semanas.
Dividir o trabalho em tarefas mais pequenas
Estimar cada uma das tarefas
Distribuir ao longo das semanas
E tentar aproximar o número de horas por semana para que fosse sempre constante

[9] Considere o seguinte processo de Desenvolvimento de Software:
O arquiteto desenha, a partir do Software Requirements Specification (SRS), o Software Architecture and Desigh (SAD). Este documento é revisto e aprovado pela equipa. Depois, com base nos documentos SRS, SAD e Plano de Projeto, cada programador codifica um requisito, escreve os testes, e executa-os. Depois de concluído o módulo resultante é integrado com os restantes módulos já anteriormente criados. Depois de pronto, passa para o próximo requisito, até que todos os requisitos estejam concluídos.
Desenhe um diagrama deste processo, à semelhança do que usou nas aulas, como por exemplo o que consta da figura abaixo. Deve escrever os pressupostos que considerou e que não constam da descrição.

Tags : , ,

Proposta de trabalho (em Gaia)

“SABER PORTO is NOW hiring the best:
– CHARACTER ARTISTS
– ENVIRONMENT ARTISTS
– TEXTURE ARTISTS

If you’re interested to work in Porto and develop AAA games, send your CV and PORTFOLIO to jobs@saber3d.pt.”

+infos(rede social): LINK

+infos(oficial): http://www.bigmoonstudios.com/

Tags : ,

Humble Software Bundle: Maps Extravaganza Encore (uma campanha)

Esta é outra campanha da Humble mas o caso não é tanto para GameDev mas para jogos de tabuleiro. Tratam-se de várias ferramentas, softwares que permite criar mapas para jogos de tabuleiro. Interessante este tipo de programas, que eu não conhecia :) (também não tinha procurado). Da lista de prendas desta campanha consta:

Token Treasury: Monsters
Battle Maps Collection
Floorplan Collection
Sources Maps: Castles
Symbol Set 2: Fantasy Floorplans
Source Maps: Temples, Tombs and Catacombs
Tome of Ultimate Mapping
Perspectives 3
Campaign Cartographer 3+ One Year License
Campaign Cartographer 3+ Lifetime License
City Designer 3
Dungeon Designer 3

+infos(a campanha): LINK

Tags : , , , , ,

Humble Game Dev Map & Level Creator Bundle, Humble software bundle (uma campanha)

Está a decorrer outra campanha no Humble com algumas coisas interessantes para acerca de GameDev, nomeadamente alguns programas para a construção de mapas e níveis de jogos. Da lista consta:

Egyptian Tileset
World Map Pixel Art Tileset
Super Pixel Dungeon
Fantasy Map
Night City Game Level Kit
Tropical Island 2d game Tileset
Desert Tileset
Fantasy Village
Game Level Map Set Kit
Fantasy Jungle Pixel Art Tileset
House Interiors Tileset Pack
City Street Tileset Pack
WiraWiri Game Level Map Builder
Misty Forest Ground Tiles
595 Medieval 2D Game Asset Pack
Platformer Game Tile Set 3
Simple RPG Tileset
Platformer Game Tile Set 1
Super Pixel Ice Cavern Tileset
Cartoon Platformer TilesetPack
Mega Factory Scene Creation Pack
Pixel Art Tileset Collection
Game Level Map – 9 Different Worlds
Underwater Tile Set
Isometric Forest
Wolfsong Tilesets
Top Down Tileset Interior
16 Jump Vertical Game Backgrounds
2D Isometric Starter Style Kit
The Dungeon Top Down Tileset
Game Level Map Pack Side Scrolling
Top Down Tileset Forest
Mega Castle & Dungeon Pack
Game Level Map Creator For Water Levels
Landscape Constructor Set
Woodlands Level Map Creator
Green Greens Forest Platformer Tileset

+infos(a campanha): LINK

Tags : , , , , , ,

Proposta de trabalho (em Gaia)

“SABER PORTO is hiring the best:
– CONCEPT ARTISTS
– GAME DESIGNERS
– VISUAL FX ARTISTS
If you’re interested to work in Porto and develop AAA games, send your CV and PORTFOLIO to jobs@saber3d.pt”

+infos(rede social): LINK

+infos(oficial): http://www.bigmoonstudios.com/

Tags : ,